如果在 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 构造函数模式。
假设您有一个这样的承诺链:
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 构造函数模式。