【问题标题】:Angular 2 chained Promise and passing on rejectAngular 2 链式 Promise 并传递拒绝
【发布时间】:2017-01-11 15:40:05
【问题描述】:

应该是一个简单的问题,但是我找不到关于如何做到这一点的文档。

像这样链接一个承诺:

// 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
});

我了解,除非我传递第一个 catch 回调的拒绝,否则后续的 then 将被视为已解决。

那么...如何从 catch 函数中调用拒绝?

【问题讨论】:

    标签: javascript angular es6-promise


    【解决方案1】:

    https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

    您需要在 catch 处理程序中抛出异常,例如拒绝第二个链。

    // 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";
    })
    

    【讨论】:

    • 显然,我知道这很简单。所以return 传递解析的数据,throw 传递拒绝的数据。谢谢!
    • 我只是返回错误,而不是抛出它,谢谢大家!
    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多