Node.js 如何在后台工作 - 简要分析
node.jsserver side programmingprogramming更新于 2025/4/15 1:22:17
Node.js 仅使用一个 JavaScript 执行线程。
问题是 − Node.js 如何处理多个 http 或任何其他请求,并且还可能存在性能、安全性方面的问题?
Node.js 在应用程序启动时启动事件循环并使用它处理回调函数。Node.js 维护一个工作池。长时间运行的操作被转移到这个工作池,事件池只在任务完成时处理来自这个工作池的响应。
工作池与操作系统协作,完成繁重的工作并管理任务的调度。
工作池一旦完成任务,就会使用回调函数响应事件循环。
事件循环维护适当事件的执行顺序。
事件循环 −
它首先检查是否有任何计时器事件,如 setTimeout 或 setInterval。
其次,它检查是否有待处理的回调,例如,待执行的 I/O 相关回调。
下一步是轮询; Node 将尝试寻找新的 I/O 来执行其回调函数。
检查阶段,在此阶段,节点将立即执行回调函数。它使用 setImmediate 调用
关闭回调 −最后,node 将执行已注册的 close 回调函数。
如果没有剩余的已注册事件要执行,则只有 node 将执行 process.exit。
Node 维护一个 ref 变量来保存事件的计数器,每次发生新事件时,计数器都会递增。
在服务器环境中,我们使用 createServer 创建一个没有 close 事件的服务器,因此除非手动停止进程,否则它不会被 node.js 自动关闭。
默认情况下,node mainatsn 作用域针对每个 http 请求,以避免它与其他请求混合。
定义的全局对象(如果有)可以被任何请求访问,这需要开发人员注意。