request-promise无法传播错误

时间:2018-01-17 06:38:02

标签: node.js ecmascript-6 promise request-promise

这是我的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调用抛出的原始错误。

1 个答案:

答案 0 :(得分:0)

您使用.error代替.catch

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

hit().then( res => {
    console.log(ae_res)
}).catch( err => {
    console.err(err)
});