在Promise.race()中,如何判断是哪个Promise被解决了?

简介: 在Promise.race()中,如何判断是哪个Promise被解决了?

在使用 Promise.race() 时,若要判断是哪个 Promise 率先被解决,可在创建 Promise 实例时,将其标识信息也一同封装进去。下面为你介绍几种实现方法。

方法一:在 Promise 结果中携带标识

你可以在每个 Promise 被解决时,返回一个包含标识信息和实际结果的对象,这样在 then 回调中就能依据标识判断是哪个 Promise 被解决了。

代码解释

  • createPromise 函数用于创建一个 Promise,在其被解决时返回一个包含 idresult 的对象。
  • Promise.race()then 回调里,解构出 idresult,从而判断是哪个 Promise 被解决,并输出相应信息。

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

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

代码解释

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

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

相关文章
|
1月前
|
前端开发
在Promise.race()中判断哪个Promise被拒绝了
在Promise.race()中判断哪个Promise被拒绝了
140 68
|
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区别和使用场景