事件循环的流程:
事件循环分为6个阶段,这六个阶段会按顺序反复运行;
运行到某阶段,都会从该阶段对应的回调队列中取出函数执行
当队列为空或者执行的回调函数数量达到系统设定的阈值,就会进入下一个阶段
Node的Event loop一共分为6个阶段,每个细节具体如下:
timers: 执行setTimeout和setInterval中到期的callback。
pending callback: 上一轮循环中少数的callback会放在这一阶段执行。
idle, prepare:仅在内部使用。
poll:最重要的阶段,执行pending callback,在适当的情况下回阻塞在这个阶段。
check:执行setImmediate的callback。
close callbacks: 执行close事件的callback,例如socket.on('close'[,fn])或者http.server.on('close, fn)。
注意:上面六个阶段都不包括 process.nextTick()