js setinterval 实现
使用 setInterval 实现定时任务
setInterval 是 JavaScript 中的一个内置函数,用于按照指定的时间间隔重复执行某个函数或代码块。以下是基本语法:
setInterval(function, delay, [arg1, arg2, ...]);
function:需要重复执行的函数或代码块。delay:时间间隔,单位为毫秒(1000 毫秒 = 1 秒)。[arg1, arg2, ...](可选):传递给函数的额外参数。
示例代码
以下是一个简单的示例,每隔 1 秒在控制台输出一次 "Hello, world!":

setInterval(() => {
console.log("Hello, world!");
}, 1000);
传递参数
如果需要向定时执行的函数传递参数,可以在 setInterval 的第三个参数及之后的位置添加:

function greet(name) {
console.log(`Hello, ${name}!`);
}
setInterval(greet, 1000, "Alice");
停止定时任务
setInterval 返回一个唯一的标识符(ID),可以用于停止定时任务。使用 clearInterval 函数并传入该 ID 即可停止:
const intervalId = setInterval(() => {
console.log("This will run every second");
}, 1000);
// 5 秒后停止定时任务
setTimeout(() => {
clearInterval(intervalId);
console.log("Interval stopped");
}, 5000);
注意事项
- 内存泄漏:如果不及时清除
setInterval,可能会导致内存泄漏。确保在不需要时调用clearInterval。 - 精确性:
setInterval的时间间隔并不是绝对精确的,可能会受到其他任务的影响。 - 嵌套定时任务:在某些情况下,使用
setTimeout嵌套调用可能比setInterval更灵活。
替代方案
如果希望每次执行完函数后再计算下一次执行的时间,可以使用 setTimeout 嵌套调用:
function repeat() {
console.log("This runs once, then schedules the next run");
setTimeout(repeat, 1000);
}
repeat();
这种方式可以避免 setInterval 的某些问题,比如函数执行时间过长导致的时间漂移。






