全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

Node.js setInterval 间隔定时器

setInterval 是 Node.js 的全局函数,用于按指定间隔重复执行回调函数。

基本用法

JavaScript
// 每隔 1000ms 执行一次
const intervalId = setInterval(() => {
  console.log('重复执行', new Date().toLocaleTimeString());
}, 1000);

console.log('立即执行');

传递参数

JavaScript
// 向回调函数传递参数
let count = 0;

const intervalId = setInterval((name) => {
  count++;
  console.log(`${name}: 第 ${count} 次执行`);

  if (count >= 3) {
    clearInterval(intervalId);
  }
}, 1000, 'Timer');

取消定时器

JavaScript
const intervalId = setInterval(() => {
  console.log('执行中...');
}, 500);

// 3 秒后取消
setTimeout(() => {
  clearInterval(intervalId);
  console.log('定时器已取消');
}, 3000);

返回值

setInterval 返回一个 Timeout 对象:

JavaScript
const timer = setInterval(() => {}, 1000);

console.log(typeof timer); // object
console.log(timer._idleTimeout); // 间隔时间

// 取消定时器
clearInterval(timer);

实际应用示例

倒计时

JavaScript
let seconds = 10;

const countdown = setInterval(() => {
  console.log(`剩余 ${seconds} 秒`);
  seconds--;

  if (seconds < 0) {
    clearInterval(countdown);
    console.log('倒计时结束');
  }
}, 1000);

定时任务

JavaScript
// 每 5 秒检查一次状态
const checkStatus = setInterval(async () => {
  const status = await getStatus();
  if (status === 'completed') {
    clearInterval(checkStatus);
    console.log('任务完成');
  }
}, 5000);

注意事项

JavaScript
// 回调执行时间超过间隔时间时,会导致执行延迟
setInterval(() => {
  // 这个操作耗时 2 秒
  // 实际间隔会变成 2 秒 + 1000ms
  heavyOperation();
}, 1000);

// 解决方案:使用递归 setTimeout
function runWithFixedDelay() {
  heavyOperation();
  setTimeout(runWithFixedDelay, 1000);
}
runWithFixedDelay();

setInterval 不会等待回调执行完成,可能在回调未结束时触发下一次调用。

要点总结

  • setInterval 按固定间隔重复执行回调
  • 返回 Timeout 对象,用 clearInterval 取消
  • 回调执行时间会影响实际间隔
  • 需要固定间隔时考虑递归 setTimeout

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js require 模块加载函数
下一篇 → Node.js setTimeout 定时器
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库