javascript - 如果在 Promise 链中的某个点抛出错误,它是否会自动沿着链向下传播?

标签 javascript asynchronous promise es6-promise asynchronous-javascript

假设你有一个像这样的 promise 链:

asyncFunction()
.then((value) => {
    resolve(value)
})
.then((value) => {
    resolve(value)
})
.then((value) => {
    resolve(value)
})
.catch((error) => {
    reject(error)
})

如果在这些函数调用之一期间引发错误,该错误是否会自动传播到链末尾的 catch 处?假设错误是在 asyncFunction() 期间一开始抛出的,那么它传播的确切机制是什么?错误是否传递给每个 then 的处理程序?或者每个 then 都会寻找第二个处理程序,但没有看到一个处理程序,因此将错误传递给下一个 then

最佳答案

是的,它会向下传播,直到遇到第一个catch。应跳过所有 then 子句。

我注意到使用 resolve()reject() 可以避免这种情况,在这种情况下不需要 Promise 构造函数模式。

关于javascript - 如果在 Promise 链中的某个点抛出错误,它是否会自动沿着链向下传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61545495/

相关文章:

Javascript/NodeJs 不同的异步函数产生一个大的 json 文件

javascript - 如何从异步调用返回响应?

laravel - 如何在VueJs中访问axios中的 `PromiseValue` `response`

JavaScript 使用程序集名称直接调用 C# web 服务方法

javascript - jquery 中的 "closest()"方法不起作用

javascript - 附加头在 Jade 中不起作用

c# - 对套接字的异步方法 BeginSend 的队列调用

javascript - 将变量从 Promise 转移到 Promise

javascript - 为什么这个 'Promise Chaining' 不起作用?

javascript - 删除 float :none from CSS class