Reputation: 6232
How can you reject a promise from inside its then()
?
For example:
Promise.all(promiseArr).then(()=>{
if(cond){
//reject
}
}).catch(()=>{ /*do something*/ });
The only relevant question I found was this: How to reject a promise from inside then function but it's from 2014, so there must be a better way then to throw by now with support of ES6.
Upvotes: 11
Views: 9083
Reputation: 61
I have found out (after hours of scratching my head) that if a throw
is within an async method such as setTimeout(() => throw new Error('description'))
it will be treated as an Unhandled Exception
and will NOT end up in your .catch()
block (you'll only see it in the console window) - see this article where I found out about that difference between throw
and Promise.reject
.
Upvotes: 2
Reputation: 223044
ES6/ES2015 is still JavaScript and doesn't offer anything new regarding promise rejection. In fact, native promises are ES6.
It is either
promise
.then(() => {
return Promise.reject(...);
})
.catch(...);
or
promise
.then(() => {
throw ...;
})
.catch(...);
And throw
is more idiomatic (and generally more performant) way to do this.
This may not be true for other promise implementations. E.g. in AngularJS throw
and $q.reject()
is not the same thing.
Upvotes: 11