gpt4 book ai didi

javascript - 为什么等待不正确处理拒绝错误

转载 作者:行者123 更新时间:2023-12-01 17:22:13 25 4
gpt4 key购买 nike

为什么 promise catch 不能与 await 一起工作?

我想在被拒绝时捕获错误,但我得到了两个不同的结果

(async () => {
var t = (new Promise((r1, r2) => r2(12345)));
t.catch(e=> console.log(e));
await t;
})()

错误结果:VM5989:1 Uncaught (in promise)

(async () => {
var t = (new Promise((r1, r2) => r2(12345))).catch(e=> console.log(e));
await t;
})()

没有错误并返回 12345

演示图片:

node@12/chrome@75 console ,我得到了两个不同的结果。

当我使用 t.catch 时,我得到了 Unhandled promise rejection

当我使用 (new Promise()).catch 时,我得到了 except 结果。

为什么?我如何使用 t 并获得正确的结果?

最佳答案

在第一个示例中,您通过调用 t.catch() 创建了一个处理异常的新 promise 。 , 但您没有将其分配给 t , 所以 t仍然是未处理拒绝的 promise 。

在第二个例子中,t引用链,这是一个处理拒绝的 promise (.catch() 延续不会抛出,所以它用 undefined 解析),所以等待 t不会导致 async抛出函数。

但是,因为t在第一个例子中仍然包含一个被拒绝的 promise ,等待它会导致 async抛出函数。

关于javascript - 为什么等待不正确处理拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56543779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com