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

相关推荐
yingyima21 分钟前
VS Code 正则替换技巧:从凌晨3点的服务器报警开始
前端
默_笙28 分钟前
🛬 我让 AI 帮我写了一个打飞机游戏,结果 Canvas 把我整不会了
前端·javascript
梯度不陡28 分钟前
AI 到底能不能从零写软件?ProgramBench 和 RepoZero 给出了两种答案
前端·javascript·面试
冬奇Lab1 小时前
每日一个开源项目(第137篇):Penpot - 真正开源的设计协作工具,SVG 原生格式消灭设计-开发鸿沟
前端·开源·设计
nuIl1 小时前
实现一个 Coding Agent(7):Skills
前端·agent·cursor
nuIl1 小时前
实现一个 Coding Agent(8):会话持久化与多会话
前端·agent·cursor
jt君424262 小时前
React Native JSI 深入剖析 — 第 5 部分中文技术整理:用 HostObject 把 C++ 类暴露给 JavaScript
前端·react native
胡萝卜术2 小时前
滑动窗口最大值:从暴力到单调队列,层层优化全解析
前端·javascript·面试
fluffyox2 小时前
Notion 的公式栏里,藏着一台虚拟机——逆向 + 用 600 行 JS 复刻它的编译器与栈式 VM
前端
kyriewen3 小时前
2026 年了,这 6 个 npm 包可以卸载了——浏览器原生 API 已经能替代
前端·javascript·npm