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

Node.js setTimeout 定时器

setTimeout 是 Node.js 的全局函数,用于在指定延迟后执行一次回调函数。

基本用法

JavaScript
// 延迟 1000ms 后执行
const timerId = setTimeout(() => {
  console.log('延迟执行');
}, 1000);

console.log('立即执行');
// 输出顺序: 立即执行 -> (1秒后) 延迟执行

传递参数

JavaScript
// 向回调函数传递参数
setTimeout((name, age) => {
  console.log(`${name} is ${age} years old`);
}, 1000, 'Tom', 25);
// 输出: Tom is 25 years old

取消定时器

JavaScript
const timerId = setTimeout(() => {
  console.log('不会执行');
}, 1000);

// 取消定时器
clearTimeout(timerId);

返回值

setTimeout 返回一个 Timeout 对象,可用于取消定时器:

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

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

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

延迟时间限制

JavaScript
// 延迟时间范围: 1ms - 2147483647ms (约 24.8 天)
// 超出范围会被设为 1ms

setTimeout(() => {
  console.log('1ms 后执行');
}, 9999999999); // 会被修正为 1ms

与 setImmediate 的区别

JavaScript
// setTimeout(fn, 0) 放入 timers 阶段
setTimeout(() => console.log('timeout'), 0);

// setImmediate 放入 check 阶段
setImmediate(() => console.log('immediate'));

// 在 I/O 回调中,immediate 先执行
const fs = require('fs');
fs.readFile('file.txt', () => {
  setTimeout(() => console.log('timeout'), 0);
  setImmediate(() => console.log('immediate'));
  // 输出: immediate -> timeout
});

setTimeout 的最小延迟是 1ms,传入 0 实际上是 1ms。

要点总结

  • setTimeout 在指定延迟后执行一次回调
  • 返回 Timeout 对象,可用 clearTimeout 取消
  • 延迟时间范围 1ms 到约 24.8 天
  • 配合事件循环理解执行时机

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

← 上一篇 Node.js setInterval 间隔定时器
下一篇 → Node.js Buffer 和流
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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