Module 基礎模組

模組timers

timers 模組是一個內建模組,提供了一些與時間相關的函數和對象,包括setTimeout()、setInterval()、clearInterval()、clearTimeout() 等等

setInterval() 函數每隔指定的時間後呼叫函數,傳回定時器物件。

1 2 3 4 5 6
var timers = require('timers'); function callback() { console.log('Hello, World!'); } var intervalId = timers.setInterval(callback, 1000);

setTimeout() 函數在指定的時間後呼叫函數,傳回定時器物件。

1 2 3 4 5 6
var timers = require('timers'); function callback() { console.log('Hello, World!'); } var timeoutId = timers.setTimeout(callback, 1000);

clearTimeout() 函數用來取消一個由setTimeout() 方法設定的計時器。需要提供的是在setTimeout() 中傳回的定時器標識符值。

1 2 3 4 5 6 7
var timers = require('timers'); function callback() { console.log('Hello, World!'); } var timeoutId = timers.setTimeout(callback, 1000); timers.clearTimeout(timeoutId);

clearInterval() 函數用來取消一個由setInterval() 方法設定的定時器。需要提供的是在setInterval() 中傳回的定時器識別碼值。

1 2 3 4 5 6 7
var timers = require('timers'); function callback() { console.log('Hello, World!'); } var intervalId = timers.setInterval(callback, 1000); timers.clearInterval(intervalId);

setImmediate() 函數用於在下一個閒置時間立即呼叫函數,傳回定時器物件。

1 2 3 4 5 6
var timers = require('timers'); function callback() { console.log('Hello, World!'); } var immediateId = timers.setImmediate(callback);

以上都是timers 模組提供的常用函數和對象範例,透過使用這些函數和對象,可以方便的在應用程式中實現延遲執行任務或調度任務執行。

靜態函數

setTimeout

在指定的時間後呼叫函數

1 2 3
static Timer timers.setTimeout(Function callback, Number timeout = 1, ...args);

呼叫參數:

  • callback: Function, 指定回呼函數
  • timeout: Number, 指定延時的時間,以毫秒為單位。超過2^31 的話,立即執行。
  • args: ..., 額外的參數,傳入到指定的callback 內,可選。

回傳結果:

  • Timer, 傳回定時器對象

clearTimeout

清除指定的計時器

1
static timers.clearTimeout(Value t);

呼叫參數:

  • t: Value, 指定要清除的定時器

setInterval

每間隔指定的時間後呼叫函數

1 2 3
static Timer timers.setInterval(Function callback, Number timeout, ...args);

呼叫參數:

  • callback: Function, 指定回呼函數
  • timeout: Number, 指定間隔的時間,以毫秒為單位。超過2^31 的話,立即執行。
  • args: ..., 額外的參數,傳入到指定的callback 內,可選。

回傳結果:

  • Timer, 傳回定時器對象

clearInterval

清除指定的計時器

1
static timers.clearInterval(Value t);

呼叫參數:

  • t: Value, 指定要清除的定時器

setHrInterval

每間隔指定的時間後呼叫函數,這是一個高精度計時器,會主動打斷正在執行的JavaScript 腳本執行計時器

1 2 3
static Timer timers.setHrInterval(Function callback, Number timeout, ...args);

呼叫參數:

  • callback: Function, 指定回呼函數
  • timeout: Number, 指定間隔的時間,以毫秒為單位。超過2^31 的話,立即執行。
  • args: ..., 額外的參數,傳入到指定的callback 內,可選。

回傳結果:

  • Timer, 傳回定時器對象

由於setHrInterval 的計時器會中斷正在運行的程式碼執行回調,因此不要在回調函數內修改可能影響其它模組的數據,或者在回調中呼叫任何標記為async 的api 函數,否則將會產生不可預測的結果。例如:

1 2 3 4 5 6 7 8 9 10
var timers = require('timers'); var cnt = 0; timers.setHrInterval(() => { cnt++; }, 100); while (cnt < 10); console.error("===============================> done");

這段程式碼中,第8 行的迴圈並不會因為cnt 的改變而結束,因為JavaScript 在優化程式碼時會認定在這個循環過程中cnt 不會被改變。


clearHrInterval

清除指定的計時器

1
static timers.clearHrInterval(Value t);

呼叫參數:

  • t: Value, 指定要清除的定時器

setImmediate

下一個空閒時間立即執行回呼函數

1 2
static Timer timers.setImmediate(Function callback, ...args);

呼叫參數:

  • callback: Function, 指定回呼函數
  • args: ..., 額外的參數,傳入到指定的callback 內,可選。

回傳結果:

  • Timer, 傳回定時器對象

clearImmediate

清除指定的計時器

1
static timers.clearImmediate(Value t);

呼叫參數:

  • t: Value, 指定要清除的定時器

call

呼叫給定的函數,並在超時時間到期時中斷函數運行

1 2 3
static Value timers.call(Function func, Number timeout, ...args);

呼叫參數:

  • func: Function, 指定要執行的函數
  • timeout: Number, 指定超時時間
  • args: ..., 額外的參數,傳入到指定的callback 內,可選。

回傳結果:

  • Value, 回傳func 的運行結果