我正在尝试使用异步等待在循环中的每次迭代之间设置延迟。我有一个辅助睡眠功能:
const sleep = ms => {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
这在每个循环之间正确等待:
for (let i = 0; i < 5; i++) {
console.log('waiting')
await sleep(1000)
}
但是,这不在每个循环之间等待:
[0, 1, 2, 3, 4].forEach(async () => {
console.log('waiting')
await sleep(1000)
});
如何修改forEach代码块,使其表现为常规的for循环块,且for循环的每次迭代之间都有延迟?
最佳答案
从理论上讲,您可以建立一个Promise链,使用reduce
可以使它更漂亮,但也可以使用forEach
来完成相同的模式:
[0, 1, 2, 3, 4].reduce(async (previous) => {
await previous;
console.log('waiting')
await sleep(1000)
});
但是...为什么不只使用
for
循环呢?