Timers
timer
模块定义了一系列全局函数,无需使用 require()
即可使用。
Node.js 提供的 timer
API 类似于浏览器提供的 timer
API,但它们的内部实现是不同的——Node.js 的 timer
模块是基于 Node.js Event Loop 创建的。
Class: Immediate
clearImmediate(immediateObject)
取消一个 immediate 定时器。
clearInterval(intervalObject)
取消一个 interval 定时器。
clearTimeout(timeoutObject)
取消一个 timeout 定时器。
ref()
如果之前 unref()
了定时器,可以使用 ref()
请求定时器保持打开状态。如果之前已经使用 ref()
掉用过定时器,则再次调用无效。
该方法返回一个定时器。
setImmediate(callback[, arg][, arg][, ...])
该方法用于设定在 I/O 事件回调之后、在 setTimeout 和 setInterval 之前触发的定时器。返回值 immediateObject
常用于 clearImmediate()
方法取消 immediate 定时器。此外,该方法接收不定量的可选参数,这些参数会被传递给回调函数,作为回调函数的参数。
回调函数根据它们创建的顺序依次加入到回调队列之中。回调队列在事件循环中遍历执行,如果向正在执行的回调中加入一个 immediate 定时器,那么该定时器不会立即执行,而是等到下一轮事件循环时执行。
setInterval(callback, delay[, arg][, ...])
该方法用于设定每隔 delay
毫秒执行一次的 callback
回调函数。返回值 intervalObject
常用于 clearInterval()
方法取消 interval 定时器。此外,该方法接收不定量的可选参数,这些参数会被传递给回调函数,作为回调函数的参数。
根据浏览器的表现来看,如果 delay
大于 2147483647 毫秒或小于 1,该值将会被重置为 1。
setTimeout(callback, delay[, arg][, ...])
该方法用于设定 delay
毫秒后执行 callback
回调函数。返回值 timeoutObject
常用于 clearTimeout()
方法取消 timeout 定时器。此外,该方法接收不定量的可选参数,这些参数会被传递给回调函数,作为回调函数的参数。
该回调函数延迟触发的时间可能并不等于 delay
。Node.js 无法保证回调函数准确触发的时间以及触发的顺序,只能保证回调函数触发的时间尽可能接近 delay
时间。
根据浏览器的表现来看,如果 delay
大于 2147483647 毫秒或小于 1,则该定时器会被立即执行,且该值将会被重置为 1。
unref()
setTimeout()
和 setInterval()
方法返回的值都拥有一个实例方法 timer.unref()
,该方法允许开发者创建一个定时器,但如果事件循环队列中只有这一个定时器,其将不会执行。如果定时器已经调用过 unref()
,则再次调用时没有效果。
使用 unref()
创建的 setTimeout
定时器是一个独立的定时器,它会唤醒事件循环机制,创建过多的此类定时器会影响事件循环机制的性能。
该方法返回一个定时器。