以下是我目前对事情的理解:
for 循环中的 async/await 应暂停执行,直到 Promise 解析为止,这意味着在该行完成之前不会发生循环的下一次迭代。
考虑以下数组:
const data = [];
for (let i = 0; i <= 100000; i++) {
data.push(i);
}
Run Code Online (Sandbox Code Playgroud)
方法 1:在 for 循环中等待 Promise
async function method1() {
const startTime = new Date();
console.log('start:', startTime);
for (const item in data) {
await new Promise(resolve => {
if (item % 3 === 0) {
resolve({});
} else {
resolve(item)
}
});
}
const endTime = new Date();
console.log('finish:', endTime);
console.log('total time:', endTime-startTime);
}
Run Code Online (Sandbox Code Playgroud)
因为它需要顺序执行 Promise 才能继续循环,所以我认为使用 …