是什么决定了Node.js应用程序是否继续运行?
当代码是这样的时候:
console.log('Hello World');
此短语将被打印,应用程序将立即退出。
但有时候,当我们有一个类似于正在收听的网络服务器时,它会继续工作。
确定应用程序是否会继续运行的一般规则是什么?它是与事件循环相关的东西还是类似的东西?
答案 0 :(得分:3)
事件循环(部分)负责节点保持打开的进程。
简而言之,事件循环通过事件循环上的代码排队事件来工作,并且只要存在排队的事件,该过程就不存在。一旦所有事件都已耗尽且代码已完成运行,默认情况下,该进程就存在,因为没有更多代码可以运行,也没有更多事件需要处理。
“在后台运行”的任何内容实际上是为事件循环调度事件来处理,并检查它是否已完成。有些东西(比如http服务器和各种事件发射器)会导致进程永不退出。
答案 1 :(得分:0)
我认为事件循环与保持服务器运行有关。当您期望通过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
。
现在考虑一千个请求,会有一个回送响应的循环。该循环称为事件循环。
希望这个答案有意义。谢谢!