通过链接承诺时,通过onRejected处理程序处理错误是否算作解决方案?

时间:2019-07-03 00:27:33

标签: es6-promise

在promise链中,如果第一个promise返回错误回调中处理的错误,则将运行链接的promise?

Promise.all(promises)
    .then(
        () => {
            returnError();
        },
        error => {
            logError();
        })
    .then(
        () => {
            willthisRun();
        }
    );

1 个答案:

答案 0 :(得分:1)

否,不是,第二个.then将不会运行willThisRun()。来自documentation

  

一旦实现或拒绝了Promise,相应的处理函数(onFulfilled或onRejected)将被异步调用(调度在当前线程循环中)。处理程序功能的行为遵循一组特定的规则。如果是处理程序函数:

     
      
  • 返回一个值,然后返回的promise将返回的值作为其值进行解析;
  •   
  • 不返回任何内容,然后返回的promise将使用未定义的值进行解析;
  •   
  • 抛出错误,然后返回的承诺将被拒绝,并以抛出的错误作为其值;
  •   
  • [...]
  •   

第一个.then返回的promise将被(引用)“拒绝,并以抛出的错误作为其值”,并调用第二个onRejected的{​​{1}}处理程序(未定义) ),这将引发未捕获的异常。

.then