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
输出:
1.> true
2.> Immediate {
_idleNext: null, ……, [Symbol(triggerId)]: 1
}
3.> Immediate {
_idleNext: null, ……, [Symbol(triggerId)]: 1
}
4.> false
5.> 2
参考: https://nodejs.org/api/timers.html#timers_class_immediate