一、是什么
在浏览器事件循环 (opens new window)中,我们了解到javascript在浏览器中的事件循环机制,其是根据HTML5定义的规范来实现
而在NodeJS中,事件循环是基于libuv实现,libuv是一个多平台的专注于异步IO的库,如下图最右侧所示:
libuv是多平台的专注于异步io的库
上图EVENT_QUEUE 给人看起来只有一个队列,但EventLoop存在6个阶段,每个阶段都有对应的一个先进先出的回调队列
二、流程
上节讲到事件循环分成了六个阶段,对应如下:
timers->io callbacks->idle,prepare->poll->check->clase callbacks
timers阶段:这个阶段执行timer(setTimeout、setInterval)的回调
定时器检测阶段