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 请求,以避免它与其他请求混合。

  • 定义的全局对象(如果有)可以被任何请求访问,这需要开发人员注意。


相关文章