js 实现setinterval
使用 setInterval 实现定时任务
setInterval 是 JavaScript 中用于周期性执行代码的方法。它接受两个参数:回调函数和时间间隔(毫秒)。以下是一个基本示例:
const intervalId = setInterval(() => {
console.log('This message will appear every 1 second');
}, 1000);
清除定时器
使用 clearInterval 可以停止 setInterval 的执行。需要传入 setInterval 返回的 ID:
// 停止定时器
clearInterval(intervalId);
模拟 setInterval 使用 setTimeout
可以通过递归调用 setTimeout 实现类似 setInterval 的功能:
function customInterval(callback, delay) {
let timerId;
function repeat() {
callback();
timerId = setTimeout(repeat, delay);
}
timerId = setTimeout(repeat, delay);
return timerId;
}
// 使用示例
const timerId = customInterval(() => {
console.log('Custom interval running');
}, 1000);
// 清除模拟的定时器
clearTimeout(timerId);
注意事项
- 时间间隔不保证精确,JavaScript 是单线程的,长时间运行的代码会延迟执行。
- 避免在回调函数中执行耗时操作,可能导致定时不准确。
- 在组件卸载或页面离开时清除定时器,防止内存泄漏。
带参数的 setInterval
可以向回调函数传递额外参数:
setInterval((param1, param2) => {
console.log(param1, param2);
}, 1000, 'Hello', 'World');
立即执行的定时器
如果需要立即执行一次再开始定时,可以封装一个函数:
function setIntervalImmediate(callback, delay) {
callback();
return setInterval(callback, delay);
}






