如果在 promise 链中的某个点抛出错误,它会自动传播到整个链中吗?

if an error is thrown at some point in a promise chain, is it automatically propagated all the way down the chain?

假设您有一个这样的承诺链:

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

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

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

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