从那时拒绝承诺()

shi*_*zou 7 javascript promise ecmascript-6 es6-promise

你如何拒绝其内部的承诺then()

例如:

Promise.all(promiseArr).then(()=>{
  if(cond){
    //reject
  }
}).catch(()=>{ /*do something*/ });
Run Code Online (Sandbox Code Playgroud)

我发现的唯一相关问题是: 如何拒绝来自内部功能的承诺,但它是从2014年开始的,所以必须有更好的方法来支持ES6.

Est*_*ask 7

ES6/ES2015仍然是JavaScript,并没有提供任何有关承诺拒绝的新内容.事实上,本土承诺 ES6.

它是

promise
.then(() => {
  return Promise.reject(...);
})
.catch(...);
Run Code Online (Sandbox Code Playgroud)

要么

promise
.then(() => {
  throw ...;
})
.catch(...);
Run Code Online (Sandbox Code Playgroud)

并且这throw是更惯用(并且通常更高效)的方式.

对于其他承诺实现,这可能不是这样.例如,在AngularJS throw$q.reject()是不一样的东西.