在promise链中,如果第一个promise返回错误回调中处理的错误,则将运行链接的promise?
Promise.all(promises)
.then(
() => {
returnError();
},
error => {
logError();
})
.then(
() => {
willthisRun();
}
);
答案 0 :(得分:1)
否,不是,第二个.then
将不会运行willThisRun()
。来自documentation:
一旦实现或拒绝了Promise,相应的处理函数(onFulfilled或onRejected)将被异步调用(调度在当前线程循环中)。处理程序功能的行为遵循一组特定的规则。如果是处理程序函数:
- 返回一个值,然后返回的promise将返回的值作为其值进行解析;
- 不返回任何内容,然后返回的promise将使用未定义的值进行解析;
- 抛出错误,然后返回的承诺将被拒绝,并以抛出的错误作为其值;
- [...]
第一个.then
返回的promise将被(引用)“拒绝,并以抛出的错误作为其值”,并调用第二个onRejected
的{{1}}处理程序(未定义) ),这将引发未捕获的异常。
.then