蓝鸟promise.all捕获中间承诺链并继续承诺

时间:2017-04-23 05:24:57

标签: javascript promise bluebird

非常感谢您提前寻求帮助。

以下是我要做的事情

function1(){
   throw some error();
}
function2() {
   // dosomething successfully;
}

promise.resolve()
     .then()
     .then(
       // here i want to do promise.all and if there is any exception i want to continue with chain
      promise.all(function1, function2)
         .catch()  // handle error here only
)
     .then()
     .then()
     .catch()

任何人都可以帮助我如何实现这一目标。 ie.while promise.all如果有任何错误。我不想打破这个承诺链。

2 个答案:

答案 0 :(得分:2)

尝试:

Promise.resolve().then(()=> { 
  return Promise.all(promisesArray).catch((err) => console.log(err))
}).then(() => console.log('continue futher'));

答案 1 :(得分:0)

如果你在.catch()上有一个Promise.all()并且你没有从捕获中抛出或者没有返回被拒绝的承诺,那么承诺链将继续使用{{1返回。

它完全在.catch()之后建模,其中一个catch,除非你重新抛出,否则会停止异常。类似地,除非您从catch处理程序中重新抛出(或返回被拒绝的promise),否则try/catch会停止拒绝。

另外,你的代码流程并不完全正确。这里.catch()的方式不正确:

Promise.all()

您必须将函数传递给Promise.resolve().then(...).then(Promise.all(...).catch(...)).then(...) 而不是调用.then()这是一个承诺的结果。在调用Promise.all()时,您需要传递一系列承诺。

你可以这样做:

Promise.all()