ES6中promise.all的用法是什么

es6
958
2024/1/16 16:46:07
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

ES6中的Promise.all是一个静态方法,用于处理多个Promise对象的并行执行。它接受一个Promise对象的数组作为参数,并返回一个新的Promise对象。

Promise.all会等待所有的Promise对象都变为resolved状态后才会返回,返回的Promise对象的resolve回调函数的参数是一个数组,包含了所有Promise对象的结果。如果其中任何一个Promise对象变为rejected状态,则返回的Promise对象的reject回调函数会被立即调用,并传递第一个被rejectedPromise对象的错误信息。

示例代码如下:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values); // [3, 42, 'foo']
  })
  .catch(error => {
    console.error(error);
  });

在上面的例子中,promise1promise2分别是已经被resolvedPromise对象,而promise3是一个在100ms后变为resolved状态的Promise对象。Promise.all会等待所有的Promise对象都变为resolved状态后,返回一个新的Promise对象,并将所有结果以数组的形式传递给resolve回调函数。在这个例子中,values数组包含了promise1promise2promise3的结果,即[3, 42, 'foo']

如果其中任何一个Promise对象变为rejected状态,如下所示:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, 'Error');
});

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values);
  })
  .catch(error => {
    console.error(error); // Error
  });

在这个例子中,promise3在100ms后变为rejected状态,Promise.all会立即返回一个新的Promise对象,并将promise3的错误信息传递给reject回调函数。因此,只会执行catch回调函数,并输出Error

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: es6数组添加元素的方法是什么