js实现settime
setTimeout 的基本用法
setTimeout 是 JavaScript 中用于延迟执行代码的方法,接受一个回调函数和延迟时间(毫秒)。基本语法如下:
setTimeout(() => {
console.log('这段代码将在延迟后执行');
}, 1000); // 延迟1秒
清除定时器
setTimeout 返回一个定时器 ID,可用于取消尚未执行的延迟操作。使用 clearTimeout 清除:
const timerId = setTimeout(() => {
console.log('这段代码不会执行');
}, 1000);
clearTimeout(timerId);
传递参数给回调函数
从第三个参数开始,可以传递额外的参数给回调函数:

setTimeout((arg1, arg2) => {
console.log(arg1, arg2); // 输出: Hello World
}, 1000, 'Hello', 'World');
替代 this 绑定
箭头函数自动绑定当前作用域的 this,普通函数需注意 this 指向问题:
const obj = {
value: 'test',
printValue: function() {
setTimeout(() => {
console.log(this.value); // 输出: test
}, 1000);
}
};
obj.printValue();
与 Promise 结合
可以将 setTimeout 封装为 Promise,便于异步流程控制:

function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
delay(1000).then(() => {
console.log('1秒后执行');
});
递归实现周期性任务
通过递归调用 setTimeout 可模拟周期性任务,比 setInterval 更可控:
function repeat(interval) {
setTimeout(() => {
console.log('周期性任务');
repeat(interval);
}, interval);
}
repeat(1000);
性能优化
避免频繁创建短间隔定时器,可能导致性能问题。建议合并操作或使用 requestAnimationFrame 处理动画场景。
注意事项
- 延迟时间是最小保证时间,实际执行可能因主线程繁忙而延后
- Node.js 环境下
setTimeout的延迟上限为 24.8 天(2^31-1 毫秒) - 浏览器标签处于后台时,部分浏览器会降低定时器精度






