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

相关推荐
onebyte8bits2 小时前
NestJS 系列教程(十八):文件上传与对象存储架构(Multer + S3/OSS + 访问控制)
前端·架构·node.js·状态模式·nestjs
Ruihong2 小时前
放弃 Vue3 传统 <script>!我的 VuReact 编译器做了一次清醒取舍
前端·vue.js
weixin_456164832 小时前
vue3 父组件向子组件传参
前端
Beginner x_u2 小时前
前端八股整理|CSS|高频小题 01
前端·css·八股
蜡台2 小时前
IDEA LiveTemplates Vue ElementUI
前端·vue.js·elementui·idea·livetemplates
E-cology2 小时前
【泛微低代码开发平台e-builder】使用HTML组件实现页面中部分区域自定义开发
前端·低代码·泛微·e-builder
用户9751470751362 小时前
如何使用Promise.any()处理多个异步操作?
前端
yuki_uix2 小时前
只渲染「必要的部分」:从 DepartmentTree 和 VirtualList 看前端的两种裁剪哲学
前端·面试
苏瞳儿2 小时前
前端/后端-配置跨域
前端·javascript·node.js·vue