来自node.js文档,node.js Timers
被描述为在未来的某个时间段内调用的调度函数。
广义,它们指的是setTimeout
,setInterval
和setImmediate
函数。它们进一步分为事件循环阶段定义的子组。
什么是Handle
回调?
Handles represent long-lived objects capable of performing certain operations while active.
调用计时器默认情况下创建ref’ed
句柄。 ref’ed
句柄是尚未执行回调的活动句柄。
const immediateHandle = setImmediate(() => {
console.log('SetImmediate Handle Callback')
});
// Log immediateHandle gives us the handle object
// Immediate {
// _idleNext: null,
// _idlePrev: null,
// _onImmediate: [Function (anonymous)],
// _argv: undefined,
// _destroyed: false,
// [Symbol(refed)]: true,
// [Symbol(asyncId)]: 2,
// [Symbol(triggerId)]: 1
// }
immediateHandle
在代码段中登录的immediateHandle
显示了对Event Loop
很重要的2个属性。
-
_onImmediate
:这是将被调用的回调。setTimeout
有_onTimeout
。 -
Symbol(refed)
:这表明手柄是活动的。它变成null
当不活动时。
timers
Event Loop
阶段是setTimeout
和setInterval
函数创建的手柄的回调。
check
Event Loop
阶段是调用setImmediate
函数创建的手柄的回调。
_onImmediate
回调是在Event Loop
的下一次迭代中调用的。
当当前的Event Loop's
迭代概念now
的迭代概念是基于setTimeout
阈值之前的_onTimeout
回调。