在使用 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
被解决了。