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

setInterval(() => {
console.log("Hello, World!");
}, 1000);
传递参数给回调函数
如果需要传递参数给回调函数,可以在 setInterval 的第三个参数及之后的位置传入:

function greet(name) {
console.log(`Hello, ${name}!`);
}
setInterval(greet, 1000, "Alice");
停止 setInterval
setInterval 会返回一个唯一的 ID,可以通过 clearInterval 函数来停止定时任务:
const intervalId = setInterval(() => {
console.log("Running...");
}, 1000);
// 5 秒后停止定时任务
setTimeout(() => {
clearInterval(intervalId);
console.log("Stopped");
}, 5000);
注意事项
- 时间间隔的准确性:
setInterval并不能保证严格的时间间隔,因为 JavaScript 是单线程的,其他任务可能会延迟定时任务的执行。 - 内存泄漏:如果忘记调用
clearInterval,定时任务会一直运行,可能导致内存泄漏。 - 避免嵌套:在回调函数中避免嵌套调用
setInterval,否则可能导致多个定时任务同时运行。
替代方案
如果需要在每次执行完成后等待一段时间再执行下一次,可以使用 setTimeout 递归调用:
function repeat() {
console.log("Running...");
setTimeout(repeat, 1000);
}
repeat();
这种方式可以确保每次执行之间的间隔更加准确。




