假设你有一个这样的承诺链。
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构造函数模式了。