Node.js 定时器
稳定性: 5 - 锁定
Node.js定时器模块提供了全局API,用于在以后的某个时间段调用函数。
所有的定时器函数都是全局的。不需要通过require()
就可以访问。
setTimeout(callback, delay[, arg][, ...])
delay
毫秒之后执行callback
。返回timeoutObject
对象,可能会用来clearTimeout()
。你也可以给回调函数传参数。
需要注意,你的回调函数可能不会非常准确的在delay
毫秒后执行,Node.js不保证回调函数的精确时间和执行顺序。回调函数会尽量的靠近指定的时间。
clearTimeout(timeoutObject)
阻止一个timeout被触发。
setInterval(callback, delay[, arg][, ...])
每隔delay
毫秒就重复执行callback
。返回timeoutObject
对象,可能会用来clearTimeout()
。你也可以给回调函数传参数。
clearInterval(intervalObject)
阻止一个interval被触发。
unref()
setTimeout
和setInterval
所返回的值,拥有timer.unref()
方法,它能让你创建一个活动的定时器,但是它所在的事件循环中如果仅剩它一个定时器,将不会保持程序运行。如果定时器已经调用了unref
,再次调用将无效。
在setTimeout
场景中,当你使用unref
并创建了一个独立定时器它将会唤醒事件循环。创建太多的这样的东西会影响事件循环性能,所以谨慎使用。
ref()
如果你之前已经使用unref()
一个定时器,就可以使用ref()
来明确的请求定时器保持程序打开状态。如果计时器已经调用了ref()
,再次调用将无效。
setImmediate(callback[, arg][, ...])
在setTimeout
和setInterval
事件前,在输入/输出事件后,安排一个callback
"immediate"立即执行。
immediates的回调以它们创建的顺序加入队列。整个回调队列会在事件循环迭代中执行。如果你将immediates加入到一个正在执行回调中,那么将不会触发immediate,直到下次事件循环迭代。
clearImmediate(immediateObject)
用于停止一个immediate的触发。