Promise.any()使用场景及实例

​Promise.any()​​ 是 ES2021(ES12) 新增的 Promise 方法,作用非常明确:

返回「第一个成功」的 Promise 全部失败了,才会进入失败状态。


1. 基本语法

ini 复制代码
Promise.any([promise1, promise2, promise3])
  .then(firstFulfilledValue => {
    // 只要有一个成功,就进这里
  })
  .catch(error => {
    // 全部都失败,才进这里
  })

2. 简单示例

javascript 复制代码
const p1 = Promise.reject('A 失败')
const p2 = Promise.resolve('B 成功')
const p3 = Promise.reject('C 失败')

Promise.any([p1, p2, p3]).then(res => {
  console.log(res) // 'B 成功'
})

3. 全部失败时

会抛出一个 ​​AggregateError​​,里面包含所有错误:

javascript 复制代码
const p1 = Promise.reject('err1')
const p2 = Promise.reject('err2')

Promise.any([p1, p2]).catch(e => {
  console.log(e) // AggregateError
  console.log(e.errors) // ['err1', 'err2']
})

4. 和 Promise.race() 的区别(高频考点)

  • ​Promise.race()​谁先完成就返回谁,不管成功失败
  • ​Promise.any()​只认第一个成功的,失败的都忽略,直到全部失败

5. 和 Promise.all() 的区别

  • ​Promise.all()​必须全部成功,一个失败就整体失败
  • ​Promise.any()​只要一个成功,就成功

一句话总结: 想"只要有一个接口通了就行,其他挂了无所谓",就用​Promise.any() ​

相关推荐
Emily1568535987019 分钟前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
To_OC5 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC6 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
风月说与山鬼7 小时前
三、大括号语法
前端·react.js
kyriewen7 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
Csvn8 小时前
🕰️ 闭包 + setTimeout 的 5 个经典陷阱:为什么定时器看到的永远不是最新的值?
前端
lilian2338 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
CarIise9 小时前
CSS选择器与样式关联
前端·css·tensorflow
里欧跑得慢10 小时前
CSS 模块化架构的演进:BEM、CSS Modules 到 CSS-in-JS 的反思
前端·css·flutter·web·css-in-js