📜  javascript Promise.all() - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:26.586000             🧑  作者: Mango

JavaScript Promise.all() - JavaScript

在 JavaScript 中,Promise.all() 是一个非常有用的方法,可用于并行执行多个 Promise 对象,并在所有 Promise 都成功解决后返回一个结果。

语法
Promise.all(iterable);
  • iterable: 一个可迭代的对象,通常是一个数组或类数组对象,其中包含多个 Promise 对象。
返回值

返回一个新的 Promise 对象,该 Promise 对象将以一个数组的形式解决,其中包含传入的所有 Promise 对象解决时的结果。如果传入的任何一个 Promise 对象失败,Promise.all() 将立即将结果设置为回调拒绝的原因,并将异常传递给前端。

示例
const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('第一个 Promise');
  }, 1000);
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('第二个 Promise');
  }, 2000);
});

const promise3 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('第三个 Promise');
  }, 1500);
});

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

在上面的示例中,我们创建了三个 Promise 对象,每个对象都是通过 setTimeout 函数模拟一个异步操作。然后,我们使用 Promise.all() 方法并传入这三个 Promise 对象的数组。当所有 Promise 都成功解决时,我们可以通过 .then() 方法获取解决的结果,由于 promise1 被设置为 1 秒后解决,promise2 被设置为 2 秒后解决,promise3 被设置为 1.5 秒后解决,所以结果数组的顺序将按照 Promise 对象的传入顺序进行排序。

输出结果将为:

[ '第一个 Promise', '第二个 Promise', '第三个 Promise' ]

如果其中一个 Promise 对象被拒绝,则 Promise.all() 将被立即拒绝,并传递拒绝的原因给 .catch() 方法,从而使我们能够捕获并处理异常情况。

总结

Promise.all() 方法允许我们同时处理多个 Promise 对象,并在它们都成功解决后返回一个数组的结果。这种并行执行可以有效地提高程序的性能和效率。注意,如果其中一个 Promise 对象被拒绝,整个 Promise.all() 将被拒绝,因此要确保正确处理异常情况。