在每个单独的循环迭代中使用await
可能会导致性能下降,因为它会逐个等待每个异步操作完成。相反,我们可以使用Promise.all
来同时执行多个异步操作,并在它们都完成后再进行下一步操作。
下面是一个使用Promise.all
的代码示例:
async function example() {
const tasks = [task1(), task2(), task3()]; // 一组异步任务
// 并行执行所有异步任务
const results = await Promise.all(tasks);
// 处理所有任务的结果
results.forEach(result => {
// 处理每个任务的结果
console.log(result);
});
// 继续进行其他操作
console.log("All tasks completed");
}
// 定义异步任务
function task1() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Task 1 completed");
}, 1000);
});
}
function task2() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Task 2 completed");
}, 2000);
});
}
function task3() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Task 3 completed");
}, 1500);
});
}
example();
在这个示例中,我们定义了一个example
函数,其中包含一组异步任务task1
,task2
和task3
。我们将这些任务存储在一个数组tasks
中。
然后,我们使用Promise.all
来并行执行所有异步任务,并等待它们全部完成。Promise.all
会返回一个包含所有任务结果的数组results
。
接下来,我们可以遍历results
数组,处理每个任务的结果。在这个示例中,我们只是简单地将结果打印到控制台,但你可以根据实际需求进行其他操作。
最后,我们可以继续进行其他操作。在这个示例中,我们只是打印了一条消息,表示所有任务已完成。
通过使用Promise.all
,我们可以同时执行多个异步任务,提高了性能,并且代码更简洁易读。