【发布时间】:2015-09-16 08:42:37
【问题描述】:
我有一连串的承诺
promisedStep1()
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
// Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps
});
而且我需要知道我在哪一步出错了。
如果我在每个承诺的步骤中添加 catch
promisedStep1()
.catch(function(){
throw {code: 1}
})
.then(promisedStep2)
.catch(function(){
throw {code: 2}
})
.catch(function (error) {
console.log('error in ', error.code);
});
code 将始终为 2,因为它从第一次捕获到第二次。
处理此类错误的技术是什么?
编辑
找到了一条路:
function promisedStep1Wrapper(){
return promisedStep1()
.catch(function(){
throw {code: 1};
});
}
function promisedStep2Wrapper(){
return promisedStep2()
.catch(function(){
throw {code: 2};
});
}
promisedStep1Wrapper()
.then(promisedStep2Wrapper)
.catch(function(err){
console.log(err.code);
});
这样可以吗,还是有更好的解决方案?
【问题讨论】:
-
您的编辑看起来不错
-
@BenjaminGruenbaum:我们是否需要将其中之一设为规范?
标签: javascript error-handling promise