什么决定了 Node.js 应用是否保持运行
What determines whether a Node.js app is kept running?
什么决定了 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
发送响应。
现在考虑数千个请求,将有一个用于发回响应的循环。该循环称为事件循环。
希望这个答案有意义。谢谢!!
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何检查函数是否将运行或可用
- 检查在使用节点运行程序时是否给出ARGV
- 检查grunt是否在详细模式下运行
- 是否可以从javascript文件中将量角器作为模块运行
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 是否可以在node.js依赖项上运行脚本
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 什么决定了 Node.js 应用是否保持运行
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 是否可以从 Firefox 运行 bash 脚本?(使用 Firefox 附加组件 SDK)
- 什么更快?运行空函数或检查函数是否未定义
- 在运行Javascript/jQuery中的函数之前,检查元素是否存在是否更具性能
- 是否有一个Javascript函数可以使代码在运行时延迟
- 将函数分配给javascript中的变量是否运行该函数
- 在不重新运行jquery验证的情况下检查表单是否有效
- 是否可以让一个onlick在javascript中一个接一个地运行不同的函数
- 检查运行到CORS的图像是否存在
- 随着时间的推移,JavaScript 的 setInterval() 方法运行是否会消耗明显的处理能力
- 焦点在单击/更改单选按钮之前运行.是否可以在焦点之前运行单击/更改