下面的代码是一个简单的Node.js web服务器,它在URL匹配时响应请求。
关于node.js的在线研究表明,一旦您启动脚本(node index.js
)回调将被置于相应的阶段,然后在您的脚本被解析后,节点进程将进入事件循环并执行特定于某个阶段的适当回调。如果没有更多的回调要执行,节点将退出。
所以我的问题是,如果当我第一次访问home page "/"
或Hello Page "/hello
时,请求处理程序正在运行,那么即使在随后的请求之后,节点仍然在运行。
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程序退出呢?
发布于 2019-06-03 00:16:18
Node.js不会因为事件循环没有挂起的工作而退出。(可悲的是,This page在这方面是不完整的,具有误导性。)如果出现以下情况,它将退出:
(我认为这是一个完整的列表。我找不到相关的文档,但我记得几年前我在他们的网站上读到过一些关于这方面的内容。)
如果它在事件循环没有挂起的工作时退出,它甚至不会等待运行一次连接回调。它将在listen
调用之后立即退出。
https://stackoverflow.com/questions/56416699
复制相似问题