在Promise.race()中判断哪个Promise被拒绝了

简介: 在Promise.race()中判断哪个Promise被拒绝了

Promise.race() 里判断哪个 Promise 被拒绝,和判断哪个 Promise 被解决的思路类似,都需要在每个 Promise 里携带标识信息。以下有两种方法可以实现。

方法一:在 Promise 拒绝时携带标识

创建 Promise 实例时,在其被拒绝的回调里带上标识信息,这样在 catch 回调中就能依据标识判断是哪个 Promise 被拒绝了。

代码解释

  • createPromise 函数用于创建 Promise 实例,可通过 shouldReject 参数控制该 Promise 是否被拒绝。若被拒绝,会返回一个包含 id 和错误信息的对象。
  • Promise.race()catch 回调中,解构出 iderror,从而判断是哪个 Promise 被拒绝,并输出相应信息。

方法二:使用自定义包装函数

自定义一个包装函数,在 Promise 被拒绝时记录其标识。

代码解释

  • wrapPromise 函数对传入的 Promise 进行包装,在其被解决或拒绝时,返回一个包含 id 和结果(或错误)的对象。
  • Promise.race()catch 回调中,解构出 iderror,以此判断是哪个 Promise 被拒绝,并输出相应信息。

通过上述两种方法,你就能在 Promise.race() 中判断是哪个 Promise 被拒绝了。

相关文章
|
1月前
|
前端开发
在Promise.race()中,如何判断是哪个Promise被解决了?
在Promise.race()中,如何判断是哪个Promise被解决了?
140 66
|
7月前
|
前端开发
Promise.allSettled()方法和Promise.race()方法有什么区别?
`Promise.allSettled()` 提供了一种更全面、更详细的方式来处理多个 `Promise`,而 `Promise.race()` 则更强调速度和竞争。我们需要根据具体的需求来选择使用哪种方法。
|
10月前
|
前端开发
手写实现ES6的Promise.all()和Promise.race()函数
这篇文章介绍了如何手写实现ES6的`Promise.all()`和`Promise.race()`函数,提供了实现这两个Promise聚合函数的详细代码示例,并展示了如何使用它们。
127 2
手写实现ES6的Promise.all()和Promise.race()函数
|
12月前
|
JavaScript 前端开发
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
475 1
Promise.all和Promise.race的区别和使用
比如当数组里的P1,P2都执行完成时,页面才显示。 值得注意的是,返回的数组结果顺序不会改变,即使P2的返回要比P1的返回快,顺序依然是P1,P2 Promise.all成功返回成功数组, 失败返回失败数据,一但失败就不会继续往下走
161 0
|
前端开发
前端学习案例24-promise.all和promise.race之2
前端学习案例24-promise.all和promise.race之2
182 0
前端学习案例24-promise.all和promise.race之2
|
前端开发
前端学习案例23-promise.all和promise.race
前端学习案例23-promise.all和promise.race
149 0
前端学习案例23-promise.all和promise.race
|
前端开发
Promise.all和promise.race的应用场景举例
Promise.all和promise.race的应用场景举例
345 0
|
前端开发
理解和使用Promise.all和Promise.race
理解和使用Promise.all和Promise.race
|
前端开发
简单说下Promise.all和Promise.race区别和使用场景
简单说下Promise.all和Promise.race区别和使用场景
172 0
简单说下Promise.all和Promise.race区别和使用场景