什么决定了 Node.js 应用程序是否继续运行?
当代码如下所示时:
console.log('Hello World');
将打印此短语,并且应用程序将立即退出。
但有时,当我们有像 Web 服务器这样的东西正在侦听时,它会继续工作。
确定应用是否会继续运行的一般规则是什么?是与事件循环有关还是类似的东西?
事件循环(部分)负责节点保持打开的进程。
简而言之,事件循环的工作原理是将事件循环上的事件排队,只要有事件排队,该进程就不会存在。一旦所有事件都用尽并且代码完成运行,默认情况下,该进程就存在在那里,因为没有更多的代码要运行,也没有更多的事件要处理。
任何"在后台工作"的东西实际上都在调度一个事件,让事件循环处理,并检查它是否完成。某些内容(如 http 服务器和各种事件发射器)将导致进程永远不会退出。
我认为事件循环与保持服务器运行没有任何关系。当您期望通过http发出某些请求时,您必须侦听用户将请求的某个端口。您必须继续倾听,除非您想停止接收用户对服务器的请求。
另一方面,事件循环是当user-1
发送请求时,您的服务器会接受请求并开始处理它。但是多亏了node.js
它没有港口...它一直在听。当user-2
发送请求时,您的服务器会接受该请求并开始处理它,就像它对user-1
所做的那样。当您的服务器完成user-1's
请求时,它会向用户 1 发送包含必要信息的响应。它将为user-2
做同样的事情.但是,如果服务器在完成请求之前user-2's
处理完user-1's
请求,它将向user-2
发送响应,然后向user-1
发送响应。
现在考虑数千个请求,将有一个用于发回响应的循环。该循环称为事件循环。
希望这个答案有意义。谢谢!!