视频字幕
欢迎学习 Node.js 事件循环!Node.js 采用单线程模型来执行 JavaScript 代码。为了处理耗时的输入输出操作而不阻塞主线程,Node.js 引入了事件循环机制。事件循环是一个持续运行的进程,负责协调异步操作和回调函数的执行,是实现高并发和高性能的关键机制。
事件循环包含四个核心组件。调用栈存放正在执行的函数调用,同步任务在这里执行。堆用来存放对象和变量。任务队列存放待执行的回调函数,比如定时器回调和输入输出回调。事件循环负责监控调用栈和任务队列,当调用栈清空时,它会将任务队列中的回调函数推到调用栈中执行。
Node.js 的事件循环基于 libuv 库实现,它有六个阶段按特定顺序循环执行。第一阶段是定时器阶段,执行 setTimeout 和 setInterval 的回调。第二阶段处理待处理的回调。第三阶段是空闲和准备阶段,主要供内部使用。第四阶段是轮询阶段,检查新的输入输出事件并执行相关回调。第五阶段是检查阶段,执行 setImmediate 的回调。最后是关闭回调阶段,执行关闭事件的回调。
在事件循环中,任务分为宏任务和微任务两种类型。宏任务包括定时器、输入输出操作和 setImmediate 等,它们的回调进入对应的宏任务队列。微任务包括 process.nextTick 和 Promise 的回调等,它们有自己的微任务队列。执行顺序是:在事件循环的每个阶段执行完毕后,会先清空所有微任务,其中 process.nextTick 的优先级最高,会在当前操作完成后立即执行。
总结一下我们学到的内容:事件循环是 Node.js 实现高并发的核心机制。它采用单线程模型,通过异步输入输出操作避免阻塞。事件循环有六个阶段按顺序循环执行不同类型的回调函数。微任务在每个阶段结束后会优先执行。理解事件循环的工作原理有助于我们编写更高性能的 Node.js 应用程序。