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() ​

相关推荐
滑雪的企鹅.21 分钟前
HTML头部元信息避坑指南大纲
前端·html
一拳不是超人23 分钟前
老婆天天吵吵要买塔罗牌,我直接用 AI 2 小时写了个在线塔罗牌
前端·ai编程
excel2 小时前
如何解决 Nuxt DevTools 中关于 unstorage 包的报错
前端
Rust研习社2 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
C澒2 小时前
AI 生码 - API2Code:接口智能匹配与 API 自动化生码全链路设计
前端·低代码·ai编程
浔川python社3 小时前
HTML头部元信息避坑指南技术文章大纲
前端·html
IT_陈寒3 小时前
SpringBoot配置加载顺序把我坑惨了
前端·人工智能·后端
kyriewen3 小时前
Next.js部署:从本地跑得欢,到线上飞得稳
前端·react.js·next.js
Moment3 小时前
面试官:给 llm 传递上下文,有哪几个身份 role ❓❓❓
前端·后端·面试
跨境数据猎手3 小时前
跨境独立站系统技术拆解(附带源码)
服务器·前端·php