【发布时间】:2016-05-18 21:25:03
【问题描述】:
全部:
我对 JS Promise 还是很陌生,当谈到 Promise 链接时有一个困惑,比如说我有一个类似的 Promise 链接:
var p = new Promise(function(res, rej){
})
.then(
function(data){
},
function(err){
})
.then(
function(data){
},
function(err){
})
.catch(
function(err){
})
让我感到困惑的是:
- 什么时候调用函数(err),什么时候调用catch?
-
then中如何解决和拒绝?
谢谢
【问题讨论】:
-
我认为this answer会帮助你
-
@Bergi 谢谢,所以从你答案中的图表来看,错误可以随时引导解决函数或拒绝下一个链接 the() 的函数,这取决于我使用返回值还是抛出错误,对吗?
-
是的,完全正确。什么都不做(返回
undefined)但希望下一个catch也能得到错误的人通常不会想到这一点,他们需要重新抛出它。 -
@Bergi 谢谢,所以我能否确保无论任何级别的链接 then() 发生什么错误,catch 都会处理异常,我能想到的唯一丑陋的方法是继续在拒绝函数中使用 throw那么,有没有更好的方法来处理这个问题?
-
只需省略你传递给
then的onreject回调,拒绝将自动传递。
标签: javascript promise