Nodejs中的事件循环
nodejs 的执行场景和js的执行场景是不同的,nodejs 是在服务端运行的,而 js 是在浏览器中运行的。所以他们的事件循环也是不同的。
各个阶段
- timers 定时器阶段
- 执行 setTimeout 和 setInterval 中的回调函数。如果有到期的定时器,他们的回调函数会在这个阶段执行
- pending callbacks 阶段
- 处理一些系统操作的回调函数,比如监听端口操作的回调函数
- idle, prepare 阶段
- 内部使用,事件循环的一个内部状态,不对用户公开
- I/O poll 轮询阶段
- 文件读取操作的回调函数
- 如果 Poll 队列为空,事件循环会检查是否有定时器到期,如果有,则跳转到 timers 阶段
- check 检查阶段
- 执行 setImmediate 中的回调函数
- close 关闭阶段
- 处理一些关闭中的事件,如关闭文件描述符、关闭网络连接等
特殊阶段
process.nextTick
每个阶段结束后,事件循环会检查是否有 process.nextTick 中的回调函数。如果有,会将这些回调函数添加到下一个事件循环的宏任务队列中
Nodejs中的事件循环
https://zouhualu.github.io/20210920/Nodejs中的事件循环/