在 Promise.race()
里判断哪个 Promise
被拒绝,和判断哪个 Promise
被解决的思路类似,都需要在每个 Promise
里携带标识信息。以下有两种方法可以实现。
方法一:在 Promise
拒绝时携带标识
创建 Promise
实例时,在其被拒绝的回调里带上标识信息,这样在 catch
回调中就能依据标识判断是哪个 Promise
被拒绝了。
代码解释
createPromise
函数用于创建Promise
实例,可通过shouldReject
参数控制该Promise
是否被拒绝。若被拒绝,会返回一个包含id
和错误信息的对象。- 在
Promise.race()
的catch
回调中,解构出id
和error
,从而判断是哪个Promise
被拒绝,并输出相应信息。
方法二:使用自定义包装函数
自定义一个包装函数,在 Promise
被拒绝时记录其标识。
代码解释
wrapPromise
函数对传入的Promise
进行包装,在其被解决或拒绝时,返回一个包含id
和结果(或错误)的对象。- 在
Promise.race()
的catch
回调中,解构出id
和error
,以此判断是哪个Promise
被拒绝,并输出相应信息。
通过上述两种方法,你就能在 Promise.race()
中判断是哪个 Promise
被拒绝了。