js实现delay
在JavaScript中实现延迟(delay)可以通过多种方式实现,以下是几种常见的方法:
使用setTimeout
setTimeout是JavaScript中用于延迟执行代码的内置函数。它接受一个回调函数和延迟时间(毫秒)作为参数。

setTimeout(() => {
console.log("Delayed message");
}, 2000); // 延迟2秒执行
使用Promise和async/await
通过结合Promise和async/await语法,可以实现更清晰的延迟逻辑。

function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function delayedFunction() {
console.log("Start");
await delay(3000); // 延迟3秒
console.log("End");
}
delayedFunction();
使用Generator函数
Generator函数结合yield也可以实现延迟效果,但需要手动控制执行。
function* delayedGenerator() {
console.log("First step");
yield new Promise(resolve => setTimeout(resolve, 1000));
console.log("Second step");
}
const generator = delayedGenerator();
generator.next().value.then(() => generator.next());
使用requestAnimationFrame
对于需要与浏览器渲染帧同步的延迟,可以使用requestAnimationFrame。
function delayByFrames(callback, frames) {
let count = 0;
function loop() {
if (count++ < frames) {
requestAnimationFrame(loop);
} else {
callback();
}
}
loop();
}
delayByFrames(() => console.log("Delayed by frames"), 60); // 延迟约1秒(60帧)
注意事项
setTimeout的延迟时间并非精确值,实际执行时间可能受浏览器或系统负载影响。- 在Node.js环境中,可以使用
setImmediate或process.nextTick实现类似的延迟效果。 - 对于需要取消延迟的场景,记得保存
setTimeout返回的ID并使用clearTimeout取消。






