Angular 2 chained Promise and passing on reject

社会主义新天地 提交于 2019-12-08 00:38:59

问题


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?


回答1:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!