- 在链式调用时需要返回一个新的
Promise
- 在
then
方法中,无论是成功还是失败的回调,只要返回了结果就会传入下一个then
的回调- 当
then
方法返回的是一个Promise
则根据这个Promise
的状态去调用下一个then
对应的回调 - 当
then
方法返回的不是Promise
则直接传入下一个then
的成功回调 - 在
then
方法执行时,onFulfilled
onRejected
可能会出现错误,这时需要捕获错误,并执行失败回调(处理成失败状态)
- 当
- 总结
- 下一个
then
的状态和上一个then
执行时候的状态无关 - 只有在
then
方法执行出错或返回的是一个失败的Promise
时才会走下一个then
的失败回调,其他情况都会走下一个then
的成功回调
- 下一个
catch
方法是 .then(null, onRejected)
或 .then(undefined, onRejected)
的别名
finally
方法本质上是then
方法的特例finally
方法的回调函数不接受任何参数,所以不知道前面Promise
的状态finally
方法在执行不出错的情况下,总是返回原来的值,当执行出错时则返回一个失败的Promise
Promise.all()
Promise.race()
Promise.allSettled()
romise.any()
的参数可以不是数组,但是必须具有 Iterator
接口