📜  如何使用 promise.all - Javascript (1)

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

如何使用 Promise.all - JavaScript

在 JavaScript 中,Promise.all 是一个非常有用的方法,它可以将多个 Promise 对象组合成一个单独的 Promise 对象,用于处理多个异步操作并等待它们全部完成。

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

Promise.all 返回一个新的 Promise 对象。当传入的所有 Promise 对象全部成功解决时,返回的 Promise 对象才会被解决。返回的 Promise 对象解析的值是一个数组,该数组包含了传入 Promise 对象 resolve 的值,按照传入的顺序排列。

如果传入的任意一个 Promise 对象失败(即被拒绝),返回的 Promise 对象会立即被拒绝,并返回失败的 Promise 对象的结果。

示例
const promise1 = Promise.resolve('Hello');
const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 2000, 'World');
});
const promise3 = fetch('https://api.example.com/data');

Promise.all([promise1, promise2, promise3])
  .then(([result1, result2, result3]) => {
    console.log(result1); // Hello
    console.log(result2); // World
    console.log(result3); // Response object from the fetch request
  })
  .catch((error) => {
    console.error(error);
  });

在上面的示例中,我们使用了 Promise.resolve 创建一个已解决的 Promise 对象 promise1,使用 Promise 构造函数创建一个延迟 2 秒的 Promise 对象 promise2,以及使用 fetch API 创建一个获取数据的 Promise 对象 promise3

通过 Promise.all 方法将这些 Promise 对象组合在一起,并使用 .then 处理成功解决时的结果,同时使用 .catch 处理任何一个 Promise 对象被拒绝的情况。

注意,在 .then 回调函数中,我们使用了 数组解构 来获取每个 Promise 对象解决的结果。

结论

使用 Promise.all 方法可以很方便地处理多个异步操作,并等待它们全部完成。确保在使用 Promise.all 时考虑到所有 Promise 对象的解析顺序以及错误处理的逻辑,以充分利用这个强大的功能。

更多关于 Promise 的知识可以在 MDN Promise 文档中获取。