Promise.race() 是 Promise 对象的一个静态方法,用于并行执行多个 Promise,只要其中一个 Promise 率先改变状态(不管是成功 fulfilled 还是失败 rejected),它返回的 Promise 就会跟着改变状态,并且其结果就是这个率先改变状态的 Promise 的结果。下面为你详细介绍其使用方法。
基本语法
Promise.race(iterable);
这里的 iterable 通常是一个数组,数组中的每个元素都应该是 Promise 实例。
使用步骤
- 创建多个
Promise实例:创建多个代表不同异步操作的Promise实例。 - 将
Promise实例放入数组:把创建好的Promise实例放到一个数组中。 - 调用
Promise.race()方法:将包含Promise实例的数组作为参数传递给Promise.race()方法。 - 处理结果:使用
then()方法处理率先完成的Promise成功的情况,使用catch()方法处理率先完成的Promise失败的情况。
示例代码
下面的示例展示了如何使用 Promise.race() 处理多个异步操作:
代码解释
asyncOperation函数:此函数模拟了一个异步操作,返回一个Promise。在指定的延迟时间后,有 90% 的概率成功解决并返回传入的值,有 10% 的概率失败并抛出错误。- 创建
Promise实例:分别创建了三个Promise实例promise1、promise2和promise3,它们的延迟时间不同。 - 调用
Promise.race()方法:将这三个Promise实例放入一个数组,然后传递给Promise.race()方法。 - 处理结果:
- 若有一个
Promise率先成功完成,then()方法中的回调函数会被调用,其参数result是率先完成的Promise的结果。 - 若有一个
Promise率先失败,catch()方法中的回调函数会被调用,其参数error是率先失败的Promise的错误信息。
- 若有一个
通过以上步骤,你就可以使用 Promise.race() 来处理多个异步操作,并获取率先完成的 Promise 的结果了。