Should be a simple question, however I can find no documentation on how to do it.
Chaining a promise like this:
// Making a promise, no problem
let promise = new Promise((resolve, reject) => {
let data = {}; // do something
reject(data);
});
// First chain, no problem
promise.then(data => {
console.log('Success callback', data); // This will not be called
}).catch(err => {
console.log('Error callback', err); // This WILL be called
})
// Second chain, acts as resolved
.then(data => {
console.log('Level 2 success', data); // This WILL be called
}).catch(err => {
console.log('Level 2 error', err); // This will NOT be called
});
I understand that unless I pass on the rejection from the first catch
callback, then subsequent then
's will be handled as resolved.
So... how to call reject from within the catch function?
bert
See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
You need to throw an exception in the catch handler for example to reject the second chain.
// First chain, no problem
promise.then(data => {
console.log('Success callback', data); // This will not be called
}).catch(err => {
console.log('Error callback', err); // This will NOT be called
throw "zonk";
})
来源:https://stackoverflow.com/questions/41594959/angular-2-chained-promise-and-passing-on-reject