# 定時器
~~~
穩定度: 5 - 已鎖定
~~~
所有的定時器函數都是全局變量. 你使用這些函數時不需要 `require()`模塊.
### setTimeout(callback, delay, [arg], [...])
調度 `delay` 毫秒后的一次 `callback` 執行。返回一個可能被 `clearTimeout()` 用到的 `timeoutId`。可選地,您還能給回調傳入參數。
請務必注意,您的回調有可能不會在準確的 `delay` 毫秒后被調用。Node.js 不保證回調被觸發的精確時間和順序。回調會在盡可能接近所指定時間上被調用。
### clearTimeout(timeoutId)
阻止一個 timeout 被觸發。
### setInterval(callback, delay, [arg], [...])
調度每隔 `delay` 毫秒執行一次的 `callback`。返回一個可能被 `clearInterval()` 用到的 `intervalId`。可選地,您還能給回調傳入參數。
### clearInterval(intervalId)
停止一個 interval 的觸發。
### unref()
`setTimeout` 和 `setInterval` 所返回的值同時具有 `timer.unref()` 方法,允許您創建一個活動的、但當它是事件循環中僅剩的項目時不會保持程序運行的定時器。如果定時器已被 `unref`,再次調用 `unref` 不會產生其它影響。
在 `setTimeout` 的情景中當您 `unref` 您會創建另一個定時器,并喚醒事件循環。創建太多這種定時器可能會影響事件循環的性能,慎用。
### ref()
如果您之前 `unref()` 了一個定時器,您可以調用 `ref()` 來明確要求定時器讓程序保持運行。如果定時器已被 `ref` 那么再次調用 `ref` 不會產生其它影響。
### setImmediate(callback, [arg], [...])
調度在所有 I/O 事件回調之后、`setTimeout` 和 `setInterval` 之前“立即”執行 `callback`。返回一個可能被 `clearImmediate()` 用到的 `immediateId`。可選地,您還能給回調傳入參數。
immediate 的回調以它們創建的順序被加入隊列。整個回調隊列會在每個事件循環迭代中被處理。如果您在一個正被執行的回調中添加 immediate,那么這個 immediate 在下一個事件循環迭代之前都不會被觸發。
### clearImmediate(immediateId)
停止一個 immediate 的觸發。