让我们做一个 promise
p
.then(f1)
.then(f2)
.then(f3)
.catch(f4)
现在陷入困境,可以从f1,f2,f3甚至p中的任何一个抛出错误
现在应该怎样处理f4(或catch)中的错误,因为上面抛出的错误可能是不同的类型,因此可以避免多次错误
?
最佳答案
您可以定义自己的自定义错误。例如 :
function CustomError(errorText){
this.error = errorText;
}
修改您的功能。为从函数返回的每个Promise添加catch块:
function p(){
return new Promise(function(resolve, reject){
//Your functionality here
})
.catch(function(error){
Promise.reject(new CustomError('f1')));
})
}
依此类推:f2,f3,f4
您的捕获块将是:
.catch((err) => {
if(err instanceof CustomError){
HandleCustomError(err);
} else {
//Some another error is happen
}
})
您的自定义错误处理程序将是这样的:
function HandleCustomError(customError){
switch(customError.error){
case 'f1':
//handle f1
break;
case 'f2':
//handle f2
break;
...
}
}