【发布时间】:2021-05-25 02:23:12
【问题描述】:
我想按顺序运行多个 Promise.all 函数,其中第二个 Promise.all 仅在第一个 Promise.all 返回后才开始。我尝试使用 async/await 来执行此操作,但我注意到虽然第二个 Promise.all 的结果显示在第一个之后,但它实际上是在并行运行(这不是我想要的)。
在示例中,
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'FirstBatch');
});
const promise4 = Promise.resolve(3);
const promise5 = 42;
const promise6 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'SecondBatch');
});
async function asyncCall() {
let values1 = await Promise.all([promise1, promise2, promise3]);
console.log(values1);
let values2 = await Promise.all([promise4, promise5, promise6]);
console.log(values2);
}
asyncCall();
以上代码的输出为:
数组 [3, 42, "FirstBatch"]
数组 [3, 42, "SecondBatch"]
顺序是正确的,但问题是它们同时显示(这意味着“SecondBatch”在“Firstbatch”完成后没有等待 2 秒)。
如何让“SecondBatch”在“Firstbatch”完成后等待2秒?
【问题讨论】:
标签: javascript node.js async-await promise