在JavaScript中,异步函数(使用async
关键字声明的函数)内部可以使用await
关键字来等待一个Promise对象的解析。当在for...of
循环中使用await
时,它会逐个迭代数组中的每个元素,并等待每个异步操作完成后再进行下一个迭代。
async
关键字声明的函数,允许在其中使用await
关键字。async
函数内部使用,用于等待一个Promise对象的解析。当在for...of
循环中使用await
时,JavaScript引擎会按顺序执行每个迭代中的异步操作,并等待每个操作完成后再进行下一个迭代。这意味着整个循环会按顺序执行,而不是并行执行。
async function processItems(items) {
for (const item of items) {
console.log(`Processing item: ${item}`);
await someAsyncOperation(item); // 假设someAsyncOperation是一个返回Promise的异步函数
console.log(`Finished processing item: ${item}`);
}
}
async function someAsyncOperation(item) {
return new Promise((resolve) => {
setTimeout(() => {
console.log(`Async operation completed for item: ${item}`);
resolve();
}, 1000);
});
}
const items = [1, 2, 3, 4];
processItems(items);
Processing item: 1
Async operation completed for item: 1
Finished processing item: 1
Processing item: 2
Async operation completed for item: 2
Finished processing item: 2
Processing item: 3
Async operation completed for item: 3
Finished processing item: 3
Processing item: 4
Async operation completed for item: 4
Finished processing item: 4
Promise.all
来并行处理以提高性能。通过这种方式,可以确保每个异步操作按顺序完成,从而避免并发带来的复杂性和潜在问题。
领取专属 10元无门槛券
手把手带您无忧上云