promise的结果按顺序进行获取

1.使用 then 方法串联多个 Promise。then 方法会返回一个新的 Promise,该 Promise 在前一个 Promise 完成后才会执行。

const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => resolve('Promise 1'), 3000);
});

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

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

// 按顺序处理 Promise 的结果
promise1
  .then(result1 => {
    console.log(result1);  // 输出结果:Promise 1
    return promise2;  // 返回第二个 Promise
  })
  .then(result2 => {
    console.log(result2);  // 输出结果:Promise 2
    return promise3;  // 返回第三个 Promise
  })
  .then(result3 => {
    console.log(result3);  // 输出结果:Promise 3
    // 所有 Promise 处理完成
  });

在上述代码中,首先创建了三个 Promise 对象(promise1promise2promise3)。然后使用 then 方法对第一个 Promise 进行处理,并返回第二个 Promise。接着继续使用 then 方法对第二个 Promise 进行处理,并返回第三个 Promise。最后使用 then 方法处理第三个 Promise 的结果。

通过这样的处理方式,每个 Promise 在前一个 Promise 执行完毕后才会执行,从而保证按顺序获取到各个 Promise 的结果。

请注意,如果中间某个 Promise 发生错误(rejected 状态),后续的 then 方法将被跳过,直接执行最近的 catch 或者全局的 catch 处理函数。

2.使用 async/await: 可以使用 async 函数和 await 关键字来按顺序执行 Promise,并获取其结果。在 async 函数内部,可以使用 await 关键字等待一个 Promise 完成,并返回其结果。这个方式更加直观和易读。

async function getResults() {
  const result1 = await promise1;
  console.log(result1);  // 输出结果:Promise 1

  const result2 = await promise2;
  console.log(result2);  // 输出结果:Promise 2

  const result3 = await promise3;
  console.log(result3);  // 输出结果:Promise 3
}

getResults();

你可能感兴趣的:(前端,javascript,开发语言)