温习Promise

92 阅读1分钟

Promise.all([p1, p2, p3])

只有p1、p2、p3的状态都变成fulfilled,状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给回调函数。

只要p1、p2、p3之中有一个被rejected,状态就变成rejected,此时第一个被reject的实例的返回值,会传递给回调函数。

Promise.any([p1, p2, p3])

ES2021 引入

只要p1、p2、p3之中有一个变成fulfilled,状态就变成fulfilled,此时第一个被fulfilled的实力的返回值,会传递给回调函数。

只有p1、p2、p3的状态都变成rejected,状态才会变成rejected,此时p1、p2、p3的返回值组成一个数组,传递给回调函数。

Promise.race([p1, p2, p3])

由最快改变状态的那个决定,最快改变的把返回值传给回调函数

Promise.allSettled([p1, p2, p3])

ES2020 引入

p1、p1、p3状态都发生改变后状态变为fulfilled,此时p1、p2、p3的返回值和状态一起组成一个数组,传递给回调函数。

以打靶为例,把枪中子弹都射出去

  1. all
  • 通过:全都中靶
  • 失败:已有一颗子弹脱靶
  1. any
  • 通过:已有一颗子弹中靶
  • 失败:全都脱靶
  1. race
  • 通过:已有一个子弹中靶
  • 失败:已有一颗子弹脱靶
  1. allSettled
  • 通过:所有子弹都已经中靶或脱靶
  • 失败:不存在