今天的node.js morsel:了解node.js计时器
#javascript #网络开发人员 #node #eventloop

来自node.js文档,node.js Timers被描述为在未来的某个时间段内调用的调度函数。

广义,它们指的是setTimeoutsetIntervalsetImmediate函数。它们进一步分为事件循环阶段定义的子组。

什么是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阶段是setTimeoutsetInterval函数创建的手柄的回调。

check Event Loop阶段是调用setImmediate函数创建的手柄的回调。

_onImmediate回调是在Event Loop的下一次迭代中调用的。

当当前的Event Loop's迭代概念now的迭代概念是基于setTimeout阈值之前的_onTimeout回调。