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
的结果了。