js 实现定时
定时器方法
JavaScript 提供了几种实现定时功能的方法,适用于不同场景:
setTimeout()
用于在指定延迟后执行一次函数。语法如下:
setTimeout(function, delayInMilliseconds, [arg1, arg2, ...]);
示例:延迟 2 秒后输出日志
setTimeout(() => {
console.log('执行一次');
}, 2000);
setInterval()
用于每隔固定时间重复执行函数。语法如下:
setInterval(function, intervalInMilliseconds, [arg1, arg2, ...]);
示例:每隔 1 秒输出日志
setInterval(() => {
console.log('重复执行');
}, 1000);
清除定时器
clearTimeout() 和 clearInterval()
用于取消已设置的定时器,需传入定时器返回的 ID:
const timerId = setTimeout(() => {}, 1000);
clearTimeout(timerId);
const intervalId = setInterval(() => {}, 1000);
clearInterval(intervalId);
进阶用法
递归 setTimeout
替代 setInterval 实现更可控的循环:
function repeatedTask() {
console.log('执行任务');
setTimeout(repeatedTask, 1000); // 每次执行后重新设置
}
setTimeout(repeatedTask, 1000);
Promise 封装
创建可链式调用的延迟:

function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
delay(2000).then(() => console.log('延迟完成'));
注意事项
- 定时器的最小延迟受浏览器限制(通常 ≥4ms)
- 长时间运行的定时器可能导致页面性能下降
- 使用
requestAnimationFrame实现动画比setInterval更高效






