事件循环,高性能到底是如何做到的
24-05-24
slbcun
861℃
0
在介绍 Node.js 的应用之前,我们先来讲解下 Node.js 中最基础也是最核心的部分:事件循环的原理。这一部分在面试过程中是必考的点,然而大家在网络上查找到的知识或多或少有些出入,会被误导。
所以本讲就基于 Node.js 10+ 版本,为你讲解事件循环的原理,不过要注意这个事件循环原理和浏览器的原理是不同的,Node.js 10+ 版本后虽然在运行结果上与浏览器一致,但是两者在原理上一个是基于浏览器,一个是基于 libuv 库。浏览器核心的是宏任务和微任务,而在 Node.js 还有阶段性任务执行阶段。
Node.js 事件循环
事件循环通俗来说就是一个无限的 while 循环。现在假设你对这个 while 循环什么都不了解,你一定会有以下疑问。
谁来启动这个循环过程,循环条件是什么?
循环的是什么任务呢?
循环的任务是否存在优先级概念?
什么进程或者线程来执行这个循环?
无限循环有没有终点?
带着这些问题,我们先来看看 Node.js 官网提供的事件循环原理图。
Node.js 循环原理
图 1 为 Node.js 官网的事件循环原理的核心流程图。