一、Node.js 中的 Event loop:

- V8 引擎解析 JavaScript 脚本;
- 代码中可能会调用 Node API,Node 会交给 LIBUV 库处理
- LIBUV 库负责 Node API 的执行。它将不同的任务分配给不同的线程,形成一个 Event Loop(事件循环),以异步的方式将任务的执行结果返回给 V8 引擎;
- 通过事件驱动的方式,将结果放到事件队列中,最终交给我们的应用。
二、当 Node.js 启动时会初始化事件循环,处理输入脚本调用异步 API ,定时器,或调用 process.nextTick(),然后开始处理事件循环。

- timers 阶段: 这个阶段执行 setTimeout() 和 setInterval() 的回调;
- I/O callbacks 阶段,执行除了 close 事件的回调和timers 的回调之外的回调;
- idle, prepare 阶段,仅 Node 内部使用;
- poll 阶段,获取新的 I/O 事件, 适当的条件下 node 将阻塞在这里;
- check 阶段,执行setImmediate() 设定的回调;
- close callbacks 阶段,比如 socket.on() 的回调会在这个阶段执行。
PS : 未完待续,以上只是自己的一些浅显的理解,如有问题,还请指正。^ _ ^