当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript Promise any()用法及代码示例


JavaScript Promise any() 方法是一个静态方法,它采用 Promise 数组作为参数并返回第一个已实现的 Promise。当数组中的所有 Promise 返回拒绝或者数组为空时,它会返回拒绝值。当所有承诺都被拒绝时,会返回 AggregateError,其中包含拒绝的原因。

用法:

Promise.any(iter)

Parameters: 它只需要一个参数。

  • iter: 它是可迭代的承诺。

返回值:它返回一个承诺:

  • rejected 如果传递的参数为空
  • asynchronously fulfilled如果遇到第一个履行的承诺
  • asynchronously rejected 如果所有的承诺都返回拒绝。在这种情况下,返回AggregateError。

示例 1:此示例展示了 Promise.any() 方法的基本用法。

Javascript


let prom1 = new Promise((resolve, reject) => {
    reject("Failure");
})
let prom2 = new Promise((resolve, reject) => {
    reject("Failed to load");
})
let prom3 = new Promise((resolve, reject) => {
    resolve("Worked");
})
let prom4 = new Promise((resolve, reject) => {
    resolve("Successful");
})
let prom = [prom1, prom2, prom3, prom4];
Promise.any(prom).then((val) => { console.log(val) });

输出:前两个承诺被拒绝,第一个成功的承诺是 prom3 返回,其值使用 then 捕获并打印在控制台上

Worked

示例 2:此示例显示了如何在任何方法中拒绝 Promise。

Javascript


let prom1 = new Promise((resolve, reject) => {
    reject("Failure");
})
let prom2 = new Promise((resolve, reject) => {
    reject("Failed to load");
})
let prom3 = new Promise((resolve, reject) => {
    reject("Unsuccessful");
})
let prom4 = new Promise((resolve, reject) => {
    reject("Rejected");
})
let prom = [prom1, prom2, prom3, prom4];
Promise.any([])
    .then((val) => console.log(val))
    .catch(err => console.log(err));
Promise.any(prom)
    .then((val) => console.log(val))
    .catch(err => console.log(err));

输出:当我们在任何方法中传递一个空数组时,它会被自动拒绝并返回AggregateError,而且如果数组中传递的所有承诺都返回被拒绝的相同输出,则会显示相同的输出。

AggregateError: All promises were rejected
AggregateError: All promises were rejected

支持的浏览器:

  • 谷歌浏览器
  • 火狐浏览器
  • Opera
  • 苹果浏览器

我们有 Javascript Promise 方法的完整列表,要检查这些方法,请阅读 Javascript Promise 参考文章。



相关用法


注:本文由纯净天空筛选整理自shobhit_sharma大神的英文原创作品 JavaScript Promise any() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。