在使用 Promise.race() 时,若要判断是哪个 Promise 率先被解决,可在创建 Promise 实例时,将其标识信息也一同封装进去。下面为你介绍几种实现方法。
方法一:在 Promise 结果中携带标识
你可以在每个 Promise 被解决时,返回一个包含标识信息和实际结果的对象,这样在 then 回调中就能依据标识判断是哪个 Promise 被解决了。
代码解释
createPromise函数用于创建一个Promise,在其被解决时返回一个包含id和result的对象。- 在
Promise.race()的then回调里,解构出id和result,从而判断是哪个Promise被解决,并输出相应信息。
方法二:使用自定义包装函数
自定义一个包装函数,在 Promise 被解决时记录其标识。
代码解释
wrapPromise函数将传入的Promise进行包装,在其被解决或拒绝时,返回一个包含id和结果(或错误)的对象。- 在
Promise.race()的then和catch回调中,解构出id和相应结果(或错误),以此判断是哪个Promise被解决或失败。
通过上述方法,你就能在 Promise.race() 中判断是哪个 Promise 被解决了。