📜  Node.js 立即定时器类

📅  最后修改于: 2022-05-13 01:56:25.534000             🧑  作者: Mango

Node.js 立即定时器类

计时器模块用于调度将在未来某个时间段调用的函数。它是一个全局 API,因此无需导入 ( require(“timers”))即可使用它。

即时类有一个对象( setImmediate() ),它是在内部为计划的操作创建的,并且可以传递( clearImmediate() )以取消那些计划的操作。当计划立即时,默认情况下,节点的事件循环。 js 将继续运行,直到clearImmediate()被调用。 setImmediate()方法返回用于控制此默认行为的即时对象,同时导出immediate.ref()immediate.unref()函数。

三个直接类对象定义如下:

1. immediate.hasRef():(在 v11.0.0 中添加)这个立即对象保持事件循环处于活动状态,直到返回的 'True' 如果返回 'false' 会中断事件循环。

句法:

immediate.hasRef()

返回值< boolean > 如果返回“True”,则此即时对象保持事件循环处于活动状态。

2. immediate.ref():(在 v9.7.0 中添加)当 Immediate 处于活动状态并且 ( immediate.ref() ) 被调用时,它会请求 Node.js 事件循环没有退出这么久。无论如何,多次调用此方法没有任何效果。

句法:

immediate.ref()

返回值<立即> 它返回一个立即引用。

3. immediate.unref():(在 v9.7.0 中添加)当 Immediate 处于活动状态时,它不需要 Node.js 事件循环保持活动状态。如果任何其他活动保持事件循环运行,则在进程退出后调用即时对象的回调。无论如何,多次调用此方法也没有任何效果。

句法:

immediate.unref()

返回值<立即> 它返回一个立即引用。

示例:文件名:index.js

Javascript
// Node.js program to demonstrate the
// Immediate Class methods
 
// Setting Immediate by setImmediate Method
var Immediate = setImmediate(function alfa() {
    console.log("0.>",12);
});
 
// Printing Immediate.hasRef method
console.log("1.>",Immediate.hasRef());
// Returns true
 
// Printing Immediate.ref before unref
console.log("2.>",Immediate.ref());
// Returns timer reference
 
// Printing Immediate.unref method
console.log("3.>",Immediate.unref());
// Returns Immediate reference and
// sets hasRef to false
 
// Printing Immediate.hasRef before unref
console.log("4.>",Immediate.hasRef());
// Returns false
 
// Clears setInterval Immediate
clearImmediate(Immediate);
 
// Prints after clearing Immediate
console.log("5.>",2);


使用以下命令运行index.js文件:

node index.js

输出:

参考: https://nodejs.org/api/timers.html#timers_class_immediate