js实现settimeout
使用 setTimeout 实现延时执行
setTimeout 是 JavaScript 中用于在指定时间后执行一次函数的方法。其基本语法如下:
setTimeout(function, delay, [arg1], [arg2], ...);
function:需要延时执行的函数。delay:延时时间(毫秒)。arg1,arg2:可选参数,传递给函数的额外参数。
基本用法示例
以下代码会在 2 秒后打印 "Hello, World!":
setTimeout(() => {
console.log("Hello, World!");
}, 2000);
传递参数给回调函数
可以通过 setTimeout 的额外参数传递数据给回调函数:
setTimeout((message) => {
console.log(message);
}, 1000, "This is a message");
清除 setTimeout
setTimeout 返回一个计时器 ID,可以通过 clearTimeout 取消延时执行:
const timerId = setTimeout(() => {
console.log("This will not run");
}, 3000);
clearTimeout(timerId);
使用箭头函数简化
箭头函数可以简化回调的写法:
setTimeout(() => console.log("Simplified"), 1500);
递归实现周期性任务
虽然 setInterval 更适合周期性任务,但 setTimeout 也可以通过递归实现类似效果:
function repeat() {
console.log("Recursive timeout");
setTimeout(repeat, 1000);
}
setTimeout(repeat, 1000);
注意事项
- 延时时间只是最小值,实际执行时间可能因浏览器繁忙而延迟。
- 避免在回调中执行耗时操作,以免阻塞主线程。
- 在单页应用切换时,未执行的
setTimeout仍会继续运行,必要时需清除。







