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的返回值和状态一起组成一个数组,传递给回调函数。
以打靶为例,把枪中子弹都射出去
- all
- 通过:全都中靶
- 失败:已有一颗子弹脱靶
- any
- 通过:已有一颗子弹中靶
- 失败:全都脱靶
- race
- 通过:已有一个子弹中靶
- 失败:已有一颗子弹脱靶
- allSettled
- 通过:所有子弹都已经中靶或脱靶
- 失败:不存在