首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >即使在事件循环中没有要执行的回调,Node.js Web服务器如何保持运行?

即使在事件循环中没有要执行的回调,Node.js Web服务器如何保持运行?
EN

Stack Overflow用户
提问于 2019-06-03 00:05:52
回答 1查看 91关注 0票数 2

下面的代码是一个简单的Node.js web服务器,它在URL匹配时响应请求。

关于node.js的在线研究表明,一旦您启动脚本(node index.js)回调将被置于相应的阶段,然后在您的脚本被解析后,节点进程将进入事件循环并执行特定于某个阶段的适当回调。如果没有更多的回调要执行,节点将退出。

所以我的问题是,如果当我第一次访问home page "/"Hello Page "/hello时,请求处理程序正在运行,那么即使在随后的请求之后,节点仍然在运行。

代码语言:javascript
复制
const http = require('http');

const server = http.createServer((req,res) => {
  if(req.url === "/") {
    res.end("Home Page")
  }
  else if(req.url === "/hello") {
    res.end("Hello Page")
  }
  else {
    res.end("Page Not Found")
  }
})


server.listen(5000)

我期望一旦请求处理程序被执行,它就应该从任何已经被放入的阶段中删除,因此节点应该退出。那么,是什么阻止了Node程序退出呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-03 00:16:18

Node.js不会因为事件循环没有挂起的工作而退出。(可悲的是,This page在这方面是不完整的,具有误导性。)如果出现以下情况,它将退出:

  1. 事件循环没有挂起的工作,
  2. 没有未完成的I/O请求,
  3. 没有侦听I/O服务器套接字

(我认为这是一个完整的列表。我找不到相关的文档,但我记得几年前我在他们的网站上读到过一些关于这方面的内容。)

如果它在事件循环没有挂起的工作时退出,它甚至不会等待运行一次连接回调。它将在listen调用之后立即退出。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56416699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档