Node.js 定时器模块
Node.js 中的 Timers 模块包含各种功能,允许我们在一段设定的时间后执行一段代码或一个函数。计时器模块是全局的,我们不需要使用 require()来导入它。
定时器模块具有以下功能:
- 调度定时器:用于在设定的时间段后调用一个函数。
- setImmediate()
- setInterval()
- setTimeout()
- 取消定时器:用于取消预定定时器。
- clearImmediate()
- clearInterval()
- clearTimeout()
1。setImmediate()方法:它调度 I/O 事件回调后回调的“立即”执行。在下面的示例中,调用了多个 setImmediate 函数。每当我们这样做的时候,这些回调函数都会按照它们被创建的顺序排队等待执行。在每次事件循环迭代之后,整个回调队列都会被处理。如果立即计时器从正在执行的回调中排队,则该计时器直到下一次事件循环迭代才会被触发。
setImmediate(function A() {
setImmediate(function B() {
console.log(1);
setImmediate(function D() {
console.log(2);
});
});
setImmediate(function C() {
console.log(3);
setImmediate(function E() {
console.log(4);
});
});
});
console.log('Started...');
输出:
Started...
1
3
2
4
在上面的例子中,在事件循环的第一次迭代中,函数 A 被激发。然后在第二次迭代中激发函数 B,在第三次迭代中激发函数 C。类似地,函数 D 和 E 分别在第四次和第五次迭代中触发。
2。setInterval()方法:它在作为参数传递的每 t 次(以毫秒为单位)后重复回调的执行。
// Executed after every 1000 milliseconds
// from the start of the program
setInterval(function A() {
return console.log('Hello World!');
}, 1000);
// Executed right away
console.log('Executed before A...');
输出:
Executed before A...
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
...
3。setTimeout()方法:它调度回调在某个时间(以毫秒为单位)后的执行,该时间作为参数传递。
// Executed after 3000 milliseconds
// from the start of the program
setTimeout(function A() {
return console.log('Hello World!');
}, 3000);
// executed right away
console.log('Executed before A...');
输出:
Executed before A...
Hello World!
4。clearImmediate()方法:用于简单取消 setImmediate()方法创建的 Immediate 对象。
var si = setImmediate(function A() {
console.log(1);
});
// clears setInterval si
clearImmediate(si);
console.log(2);
输出:
2
5。clearInterval()方法:用于取消 setInterval()方法创建的立即对象。
var si = setInterval(function A() {
return console.log("Hello World!");
}, 500);
setTimeout(function() {
clearInterval(si);
}, 2000);
clearInterval()在 500 ms 后清除 setInterval 'si ',然后函数 A 执行四次。
输出:
Hello World!
Hello World!
Hello World!
Hello World!
6。clearTimeout()方法:用于取消 setTimeout()方法创建的 Immediate 对象。
// si1 is cleared by clearTimeout()
var si1 = setTimeout(function A() {
return console.log("Hello World!");
}, 3000);
// only si2 is executed
var si2 = setTimeout(function B() {
return console.log("Hello Geeks!");
}, 3000);
clearTimeout(si1);
当 clearTimeout()方法清除“si1”时,只执行 setInterval“si2”。 输出:
Hello Geeks!
版权属于:月萌API www.moonapi.com,转载请注明出处