js 中的for循环 怎么每循环一次睡眠3秒???
在 JavaScript 中,如果你想在 for
循环的每次迭代中让代码“睡眠”3秒,可以使用异步编程的方式来实现。JavaScript 中的 setTimeout
或 Promise
结合 async
和 await
是常用的方法来处理这种需求。以下是详细的说明和示例代码。
1. 使用 setTimeout
和回调函数
setTimeout
可以用来设置延迟执行的代码,但需要借助回调函数来处理延迟。
javascriptfunction sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function run() {
for (let i = 0; i < 5; i++) {
console.log(`Iteration ${i + 1}`);
await sleep(3000); // 等待 3 秒
}
console.log('All done!');
}
run();
2. 使用 setTimeout
直接控制延迟
如果你不使用 async
和 await
,你需要处理回调和定时器的复杂性。下面的示例展示了如何在每次迭代中设置延迟:
javascriptfunction sleep(ms, callback) {
setTimeout(callback, ms);
}
function run() {
let i = 0;
function loop() {
if (i < 5) {
console.log(`Iteration ${i + 1}`);
i++;
sleep(3000, loop); // 等待 3 秒后继续循环
} else {
console.log('All done!');
}
}
loop();
}
run();
3. 使用 Promise
和 async
/await
结合 Promise
和 async
/await
,你可以使代码更加清晰易读:
javascriptfunction sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function run() {
for (let i = 0; i < 5; i++) {
console.log(`Iteration ${i + 1}`);
await sleep(3000); // 等待 3 秒
}
console.log('All done!');
}
run();
4. 说明
setTimeout()
: 用于设置延迟执行的函数。需要回调函数来处理延迟。Promise
和async/await
: 更现代的方式来处理异步代码,能使代码更加直观和可读。sleep(ms)
: 返回一个Promise
,在指定的时间(以毫秒为单位)后解析。
5. 总结
要在 JavaScript 的 for
循环中实现每次迭代间的延迟,可以使用 Promise
结合 async
和 await
来简化代码,或者使用 setTimeout
与回调函数。现代的 async
/await
方式可以提供更加清晰和易于理解的代码结构。
关键字
JavaScript, for
循环, setTimeout()
, Promise
, async
, await
, 延迟, 睡眠, 异步编程