阅读(1500) (0)

Node.js 定时器

2016-08-12 21:22:43 更新
稳定性: 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()

setTimeoutsetInterval所返回的值,拥有timer.unref()方法,它能让你创建一个活动的定时器,但是它所在的事件循环中如果仅剩它一个定时器,将不会保持程序运行。如果定时器已经调用了unref,再次调用将无效。

setTimeout场景中,当你使用unref并创建了一个独立定时器它将会唤醒事件循环。创建太多的这样的东西会影响事件循环性能,所以谨慎使用。

ref()

如果你之前已经使用unref()一个定时器,就可以使用ref()来明确的请求定时器保持程序打开状态。如果计时器已经调用了ref(),再次调用将无效。

setImmediate(callback[, arg][, ...])

setTimeoutsetInterval事件前,在输入/输出事件后,安排一个callback"immediate"立即执行。

immediates的回调以它们创建的顺序加入队列。整个回调队列会在事件循环迭代中执行。如果你将immediates加入到一个正在执行回调中,那么将不会触发immediate,直到下次事件循环迭代。

clearImmediate(immediateObject)

用于停止一个immediate的触发。