下面的代码是一个简单的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程序退出的原因是什么?
答案 0 :(得分:6)
Node.js不会仅仅因为事件循环没有任何未完成的工作而退出。 (在这方面,This page令人误解,因为它是不完整的。)在以下情况下退出:
(我认为这是完整的列表。虽然我记得几年前在他们的网站上读过一些东西,但是我找不到相关的文档。)
如果在事件循环没有任何未完成的工作时退出,它甚至都不会等待运行您的连接回调一次。它会在listen
调用之后立即退出。