Node.js 的各种计时功能是什么?
Node.js 中的计时器模块由有助于控制代码执行时间的函数组成。它包括setTimeout()、setImmediate()和setInterval()方法。
1. setTimeout() 方法: setTimeout() 方法用于在指定的毫秒数后调度代码执行。指定的函数将执行一次。我们可以使用 clearTimeout() 方法来阻止函数运行。 setTimeout() 方法返回可在 clearTimeout() 方法中使用的 ID。
句法:
setTimeout(callback, delay, args )
参数:
- callback:此参数保存要执行的函数。
- delay:此参数保存调用回调函数之前等待的毫秒数。
- args:此参数保存可选参数。
例子:
let str = 'GeeksforGeeks!';
setTimeout(function () {
return console.log(str);
}, 5000);
// This console log is executed right away
console.log('Executing setTimeout() method');
输出:
Executing setTimeout() method
GeeksforGeeks!
请注意,控制台首先执行。实现的诀窍是,代码只有在至少经过这段时间后才能保证执行。
2. setImmediate() 方法: setImmediate() 方法用于在当前事件循环周期结束时执行代码。作为 setImmediate() 参数传递的任何函数都是可以在事件循环的下一次迭代中执行的回调。
句法:
setImmediate(callback, args)
参数:
- callback:此参数保存在本轮 Node.js 事件循环结束时要调用的函数。
- args:此参数保存函数的可选参数。
例子:
setTimeout(function () {
console.log('setTimeout() function running');
}, 5000);
// An interval
setInterval(function () {
console.log('setInterval() function running');
}, 5000);
// An immediate, its callback will be
// executed before those defined above
setImmediate(function () {
console.log('setImmediate() function running');
});
// IO callbacks and code in the normal
// event loop runs before the timers
console.log('Simple statement in the event loop');
输出:
Simple statement in the event loop
setImmediate() function running
setTimeout() function running
setInterval() function running
setInterval() function running
setInterval() function running
setInterval() function running
. . .
请注意,尽管 setImmediate函数是在 setTimeout 和 setInterval 函数之后定义的,但它在它们之前运行。
3. setInterval() 方法: setInterval() 方法用于以指定的时间间隔(以毫秒为单位)调用函数。它用于在指定时间段后仅执行一次函数。
我们可以使用 clearInterval() 方法来阻止函数运行。 setInterval() 方法返回可在 clearInterval() 方法中使用的 ID。
句法:
setInterval(callback, delay, args)
参数:
- callback:此参数保存在计时器结束时要调用的函数。
- delay:此参数保存调用 vallback函数之前要等待的毫秒数。
- args:此参数保存函数的可选参数。
例子:
setInterval(function() {
console.log('Welcome to GeeksforGeeks');
}, 5000);
输出:
Welcome to GeeksforGeeks
Welcome to GeeksforGeeks
.....
它将以 5 秒的时间间隔多次打印输出。