模組timers
timers 模組是一個內建模組,提供了一些與時間相關的函數和對象,包括setTimeout()、setInterval()、clearInterval()、clearTimeout() 等等
setInterval() 函數每隔指定的時間後呼叫函數,傳回定時器物件。
1
2
3
4
5
6var timers = require('timers');
function callback() {
console.log('Hello, World!');
}
var intervalId = timers.setInterval(callback, 1000);
setTimeout() 函數在指定的時間後呼叫函數,傳回定時器物件。
1
2
3
4
5
6var timers = require('timers');
function callback() {
console.log('Hello, World!');
}
var timeoutId = timers.setTimeout(callback, 1000);
clearTimeout() 函數用來取消一個由setTimeout() 方法設定的計時器。需要提供的是在setTimeout() 中傳回的定時器標識符值。
1
2
3
4
5
6
7var 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
7var timers = require('timers');
function callback() {
console.log('Hello, World!');
}
var intervalId = timers.setInterval(callback, 1000);
timers.clearInterval(intervalId);
setImmediate() 函數用於在下一個閒置時間立即呼叫函數,傳回定時器物件。
1
2
3
4
5
6var timers = require('timers');
function callback() {
console.log('Hello, World!');
}
var immediateId = timers.setImmediate(callback);
以上都是timers 模組提供的常用函數和對象範例,透過使用這些函數和對象,可以方便的在應用程式中實現延遲執行任務或調度任務執行。
靜態函數
setTimeout
在指定的時間後呼叫函數
1
2
3static Timer timers.setTimeout(Function callback,
Number timeout = 1,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- timeout: Number, 指定延時的時間,以毫秒為單位。超過2^31 的話,立即執行。
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearTimeout
清除指定的計時器
1static timers.clearTimeout(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setInterval
每間隔指定的時間後呼叫函數
1
2
3static Timer timers.setInterval(Function callback,
Number timeout,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- timeout: Number, 指定間隔的時間,以毫秒為單位。超過2^31 的話,立即執行。
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearInterval
清除指定的計時器
1static timers.clearInterval(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setHrInterval
每間隔指定的時間後呼叫函數,這是一個高精度計時器,會主動打斷正在執行的JavaScript 腳本執行計時器
1
2
3static 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
10var timers = require('timers');
var cnt = 0;
timers.setHrInterval(() => {
cnt++;
}, 100);
while (cnt < 10);
console.error("===============================> done");
這段程式碼中,第8 行的迴圈並不會因為cnt 的改變而結束,因為JavaScript 在優化程式碼時會認定在這個循環過程中cnt 不會被改變。
clearHrInterval
清除指定的計時器
1static timers.clearHrInterval(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setImmediate
下一個空閒時間立即執行回呼函數
1
2static Timer timers.setImmediate(Function callback,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearImmediate
清除指定的計時器
1static timers.clearImmediate(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
call
呼叫給定的函數,並在超時時間到期時中斷函數運行
1
2
3static Value timers.call(Function func,
Number timeout,
...args);
呼叫參數:
- func: Function, 指定要執行的函數
- timeout: Number, 指定超時時間
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Value, 回傳func 的運行結果