Promise.any

933be7ee3b8b72017e9b380a1aad5692.png

Promise.any() 是 JavaScript 中的一个静态方法,用于处理多个 Promise,并返回第一个成功解决(fulfilled)的 Promise 的结果。它在 ES2021(ES12)中引入,是 Promise 类的一部分。

语法

Promise.any(iterable);

iterable: 一个可迭代对象(如数组),其中包含多个 Promise。

返回值

•返回一个新的 Promise。

•如果至少有一个 Promise 成功解决(fulfilled),则返回该 Promise 的解决值。•如果所有的 Promise 都被拒绝(rejected),则返回一个拒绝的 Promise,并带有一个 AggregateError,其中包含所有被拒绝的错误。

用法示例

const promise1 = Promise.reject('Error 1');
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'Success 2'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 200, 'Success 3'));


Promise.any([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // "Success 2"
  })
  .catch((error) => {
    console.log(error);
  });

在这个例子中,promise2 是第一个成功解决的 Promise,所以 Promise.any() 返回 promise2 的解决值 "Success 2"。

错误处理

如果所有的 Promise 都被拒绝,Promise.any() 将返回一个包含所有拒绝原因的 AggregateError

const promise1 = Promise.reject('Error 1');
const promise2 = Promise.reject('Error 2');
const promise3 = Promise.reject('Error 3');


Promise.any([promise1, promise2, promise3])
  .then((value) => {
    console.log(value);
  })
  .catch((error) => {
    console.log(error); // AggregateError: All promises were rejected
  });

在这个例子中,所有的 Promise 都被拒绝,因此 Promise.any() 返回一个 AggregateError,其中包含所有的拒绝原因。

总结

Promise.any() 是处理多个 Promise 并获取第一个成功结果的有用工具,特别是在你只关心哪个 Promise 最先成功的情况下。它与 Promise.race() 的不同之处在于,Promise.race() 返回第一个解决或被拒绝的 Promise,而 Promise.any() 只关心第一个成功解决的 Promise。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值