如何在catch语句之外的异步/等待中拒绝?

时间:2018-12-17 06:41:15

标签: javascript asynchronous promise async-await

this SO post and answer所述,习惯上是从位于异步/等待函数中的catch语句抛出错误,如下所示:

} catch (error) {
    throw new Error(400);
}

正如同一篇文章所强调的那样,由于它与'try-catch'语句在语义上不匹配,因此您通常不会返回被拒绝的诺言(见下文)。

} catch (error) {
    return Promise.reject(new Error(400));
}

按照同样的逻辑,当从async / await函数返回catch语句之外的错误而不是抛出错误时,我应该返回被拒绝的承诺吗?

换句话说,以下内容在语义上与以上逻辑不一致吗?

async function promise () {
    throw new Error('Some error');
}

而且,这是在async / await函数内部返回错误的首选方法,因为async / await函数隐式地返回了promise?

async function promise () {
    return Promise.reject(new Error(400));
}

我知道上述两个摘要都可以在兑现承诺时捕获错误。

1 个答案:

答案 0 :(得分:1)

通常在可以使用的地方使用throw,即在async functionthen回调中使用,因为它更简单,因此更易于阅读。 return Promise.reject(…)确实有效,但冗长。