Skip to content

Timers ​

该 timer 模块公开了一个全局 API,用于调度函数在未来某个时间段内调用。由于计时器函数是全局函数,因此无需调用即可 require('node:timers') 使用该 API。

Immediate ​

此对象在内部创建并从 返回 setImmediate()。可将其传递 clearImmediate() 给以取消计划的操作。

默认情况下,当安排了即时事件时,只要即时事件处于活动状态,Node.js 事件循环就会继续运行。Immediate 返回的对象 setImmediate() 导​​出 immediate.ref() 和 immediate.unref() 函数,可用于控制此默认行为。

immediate.hasRef() ​

如果为真,该 Immediate 对象将保持 Node.js 事件循环处于活动状态。

immediate.ref() ​

调用时,要求只要处于 活动状态,Node.js 事件循环就不会 Immediate 退出。多次调用 immediate.ref() 将不起作用。

默认情况下,所有 Immediate 对象都是“被引用的”,因此通常不需要调用,immediate.ref() 除非 immediate.unref() 之前已经调用过。

immediate.unref() ​

调用时,活动 Immediate 对象将不需要 Node.js 事件循环保持活动状态。如果没有其他活动保持事件循环运行,则进程可能会在 Immediate 调用对象的回调之前退出。immediate.unref() 多次调用不会产生任何效果。

Timeout ​

setTimeout() 此对象在内部创建并从和 返回 setInterval()。可以将其传递给 clearTimeout() 或 clearInterval() 以取消计划的操作。

timeout.refresh() ​

将计时器的开始时间设置为当前时间,并重新安排计时器以在之前指定的持续时间内调用其回调(该持续时间已调整为当前时间)。这对于在不分配新 JavaScript 对象的情况下刷新计时器非常有用。

在已经调用其回调的计时器上使用此功能将重新激活该计时器。

调度计时器 ​

Node.js 中的计时器是一种内部构造,它会在一段时间后调用给定函数。计时器函数的调用时间取决于创建计时器的方法以及 Node.js 事件循环正在执行的其他工作。

setImmediate(callback[, ...args]) ​

  • callback | 此 Node.js事件循环结束时调用的函数
  • ...args | 调用时传递的可选参数callback。
  • 返回:<Immediate> 用于 clearImmediate()

callback 安排I/O 事件后回调的“立即”执行。

当多次调用时 setImmediate(),callback 函数将按照创建顺序排队等待执行。整个回调队列在每次事件循环迭代中都会被处理。如果即时计时器在正在执行的回调中排队,则该计时器直到下一次事件循环迭代才会被触发。

如果 callback 不是一个函数,则抛出 TypeError。

setInterval(callback[, delay[, ...args]]) ​

  • callback | 计时器到时调用的函数。
  • delay | 调用之前等待的毫秒数 callback。``默认值: 1。
  • ...args | 调用时传递的可选参数 callback。
  • 返回:<Timeout> 用于 clearInterval()

callback 安排每 delay 毫秒重复执行。

当 delay 大于 2147483647 或小于 1,delay 将设置为 1。非整数延迟将被截断为整数。

setTimeout(callback[, delay[, ...args]]) ​

  • callback | 计时器到时调用的函数。
  • delay | 调用之前等待的毫秒数 callback。``默认值: 1。
  • ...args | 调用时传递的可选参数 callback。
  • 返回:<Timeout> 用于 clearTimeout()

callback 安排几毫秒后执行一次性操作 delay.

可能 callback 不会在几毫秒内被调用 delay。Node.js 不保证回调的确切触发时间,也不保证其顺序。回调将尽可能接近指定的时间被调用。

取消计时器 ​

setImmediate()、setInterval() 和方法 setTimeout() 分别返回代表已安排的计时器的对象。这些方法可用于取消计时器并阻止其触发。

clearImmediate(immediate) ​

取消 Immediate 由 setImmediate() 创建的对象。

clearInterval(timeout) ​

取消 Timeout 由 setInterval() 创建的对象。

clearTimeout(timeout) ​

取消 Timeout 由 setTimeout() 创建的对象。

计时器 Promises API ​

API timers/promises 提供了一组可返回Promise对象的替代计时器函数。可通过 访问 API require('node:timers/promises')。

js
const {
  setTimeout,
  setImmediate,
  setInterval,
} = require('node:timers/promises');

timersPromises.setTimeout([delay[, value[, options]]]) ​

  • delay | 履行承诺前需等待的毫秒数。默认值: 1。
  • value | 实现承诺的值。
  • options:
    • ref | 设置为 false,表示计划任务Timeout 不需要 Node.js 事件循环保持活动状态。 默认值: true。
    • signal | 一个可选项 AbortSignal,可用于取消预定的 Timeout。

Released under the MIT License.