📜  如何在 JavaScript 中按顺序执行多个 Promise?(1)

📅  最后修改于: 2023-12-03 15:24:13.105000             🧑  作者: Mango

如何在 JavaScript 中按顺序执行多个 Promise?

在 JavaScript 中,Promise 是一种用于处理异步操作的对象,它可以让我们更好地管理代码执行顺序和异步操作的结果。但是,如果要按照特定的顺序执行多个 Promise,该怎么做呢?下面介绍几种方法。

方法一:使用 then 方法链式调用

当我们在 Promise 实例上调用 then 方法时,它会返回一个新的 Promise 实例。我们可以通过链式调用 then 方法来按顺序执行多个 Promise。

// 例子:执行三个异步操作,并按顺序输出结果
Promise.resolve()
  .then(function() {
    return fetchData1();
  })
  .then(function(result1) {
    console.log(result1);
    return fetchData2();
  })
  .then(function(result2) {
    console.log(result2);
    return fetchData3();
  })
  .then(function(result3) {
    console.log(result3);
  })
  .catch(function(error) {
    console.error(error);
  });
方法二:使用 async/await

async/await 是 ECMAScript 2017 中引入的一个新特性,它能够让我们更方便地处理异步操作。我们可以使用 async/await 来按顺序执行多个 Promise。

// 例子:执行三个异步操作,并按顺序输出结果
(async function() {
  try {
    const result1 = await fetchData1();
    console.log(result1);
    const result2 = await fetchData2();
    console.log(result2);
    const result3 = await fetchData3();
    console.log(result3);
  } catch (error) {
    console.error(error);
  }
})();
方法三:使用 Promise.all

Promise.all 可以让我们同时执行多个 Promise,并在它们都完成后返回一个包含所有结果的数组。但是,它不保证 Promise 的顺序。我们可以使用数组的 map 方法来保证顺序。

// 例子:执行三个异步操作,并按顺序输出结果
Promise.all([fetchData1(), fetchData2(), fetchData3()])
  .then(function(results) {
    return results.map(function(result) {
      console.log(result);
    });
  })
  .catch(function(error) {
    console.error(error);
  });

以上是三种常见的按顺序执行多个 Promise 的方法,你也可以结合自己的业务需求选择最适合的方法。