0

这是我的 rp 电话:

function hit() = { 
    return rp(options).then((res) => {
        return res;
    }).catch((err) => {
        console.log("Error occured");
        throw err;
    })
}

以及调用此函数的函数:

hit().then( res => {
    console.log(ae_res)
}).error( err => {
    console.err(err) /// code never hits this line
});

当我运行它时,如果 rp 调用成功,则一切正常。但如果它失败了,我永远不会在被调用函数中点击 catch() 块。

我无法传播 rp 调用引发的原始错误。

4

1 回答 1

0

您正在使用.error而不是.catch.

根据Bluebird 手册(这是request-promise返回的 Promise 类型),.error仅处理OperationalErrors,它们基本上是在不使用 throw 的情况下拒绝 Promise 的错误。对于抛出的错误,您必须使用.catch

hit().then( res => {
    console.log(ae_res)
}).catch( err => {
    console.err(err)
});
于 2018-01-17T06:41:19.140 回答