关于使用 promise 和循环实现间隔执行
1. promise 和 for 循环结合
const test = async() => {
for(let i = 0; i< 10; i ++){
console.log(`第${i+1}次循环`);
await new Promise(resolve => {
setTimeout(() => {
resolve();
}, 2000)
})
}
}
test();
打印结果:
第 1 次循环(2s后)
第 2 次循环(2s后)
第 3 次循环(2s后)
第 4 次循环(2s后)
第 5 次循环(2s后)
第 6 次循环(2s后)
第 7 次循环(2s后)
第 8 次循环(2s后)
第 9 次循环(2s后)
第 10 次循环
2. promise 和 forEach 的配合
const test = () => {
const arr = Array(10).fill(1);
arr.forEach(async (item, index) => {
console.log(`第${index+1}次循环`);
await new Promise(resolve => {
setTimeout(() => {
resolve();
}, 2000)
})
})
}
test();
打印结果(一次性打印完毕):
第 1 次循环
第 2 次循环
第 3 次循环
第 4 次循环
第 5 次循环
第 6 次循环
第 7 次循环
第 8 次循环
第 9 次循环
第 10 次循环
3. 其他实现:
-
使用了while、do while;
-
使用了map、filter、some、every的高阶函数
总结:
使用promise实现睡眠进行间隔执行,只有在for、while、do while可以进行使用;
在高阶函数中使用(例如 forEach、map、filter、some、every等),promise并不会中断循环的执行。