前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Promise all方法

Promise all方法

原创
作者头像
堕落飞鸟
发布2023-05-23 10:08:26
3150
发布2023-05-23 10:08:26
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

Promise.all方法

Promise.all方法接收一个Promise对象数组,并返回一个新的Promise对象。当传入的所有Promise对象都成功完成时,新的Promise对象将被标记为已完成,并将一个包含所有结果的数组作为其结果值;如果其中任何一个Promise对象被标记为失败,则新的Promise对象将被标记为失败,并将失败的原因作为其结果。

语法

代码语言:javascript
复制
Promise.all(iterable);

其中,iterable表示一个可迭代的对象,通常是一个Promise对象数组。

示例代码

下面是一个示例代码,演示了Promise.all方法的使用:

代码语言:javascript
复制
function performAsyncTask(value) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(value);
    }, Math.random() * 2000);
  });
}

const promise1 = performAsyncTask('Task 1');
const promise2 = performAsyncTask('Task 2');
const promise3 = performAsyncTask('Task 3');

const promises = [promise1, promise2, promise3];

Promise.all(promises)
  .then(results => {
    console.log('Results:', results); // 输出包含所有结果的数组
  })
  .catch(error => {
    console.error('Error:', error); // 输出失败的原因
  });

在上述示例中,我们定义了一个performAsyncTask函数,它返回一个Promise对象,用于模拟异步操作。我们创建了三个不同的Promise对象,并将它们存储在promises数组中。

然后,我们调用Promise.all方法,并将promises数组作为参数传递给它。通过.then()方法,我们可以在所有Promise对象都成功完成时获取到一个包含所有结果的数组,并输出结果;通过.catch()方法,我们可以捕获任何一个Promise对象失败的情况,并输出失败的原因。

Promise.all方法的特点

Promise.all方法具有以下特点:

  1. 如果传入的可迭代对象中有任何一个元素不是Promise对象,则会将其视为已完成的Promise对象,并将其值包装在一个新的Promise对象中。
  2. 当传入的所有Promise对象都成功完成时,新的Promise对象将被标记为已完成,并将一个包含所有结果的数组作为其结果值。
  3. 如果其中任何一个Promise对象被标记为失败,则新的Promise对象将被标记为失败,并将失败的原因作为其结果。

下面是一些示例代码,展示了Promise.all方法的不同用法:

代码语言:javascript
复制
// 示例1: 所有Promise对象都成功完成
const promise1 = Promise.resolve('Result 1');
const promise2 = Promise.resolve('Result 2');
const promise3 = Promise.resolve('Result 3');

Promise.all([promise1, promise2, promise3])
  .then(results => {
    console.log(results); // 输出: ['Result 1', 'Result 2', 'Result 3']
  });

// 示例2: 其中一个Promise对象失败
const promise4 = Promise.resolve('Result 4');
const promise5 = Promise.reject(new Error('Error 5'));
const promise6 = Promise.resolve('Result 6');

Promise.all([promise4, promise5, promise6])
  .then(results => {
    console.log(results); // 不会执行到这里
  })
  .catch(error => {
    console.error(error); // 输出: Error: Error 5
  });

// 示例3: 传入的可迭代对象包含非Promise对象
const promise7 = Promise.resolve('Result 7');
const promise8 = 'Result 8';
const promise9 = Promise.resolve('Result 9');

Promise.all([promise7, promise8, promise9])
  .then(results => {
    console.log(results); // 输出: ['Result 7', 'Result 8', 'Result 9']
  });

在上述示例中,我们展示了不同方式使用Promise.all方法组合Promise对象并处理结果的方法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Promise.all方法
    • 语法
      • 示例代码
      • Promise.all方法的特点
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档