我对Node js中的response.end
感到困惑,我有以下代码。
const http = require("http");
http.createServer(function(req, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
setInterval(() => {
response.write(new Date() + "\n");
}, 1000)
}).listen(8080);
console.log("Service Running at 8080 127.0.0.1")
现在上面的代码将在20秒或更长时间后开始在浏览器中打印日期,现在这段代码没有任何reponse.end
,这很明显,因为如果有response.end()
那么setIntervel
内的代码永远不会执行。
但是这样做并没有做任何事情都需要永远加载页面。
const http = require("http");
http.createServer(function(req, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write("Test");
}).listen(8080);
console.log("Service Running at 8080 127.0.0.1");
但如果我在上面的代码中添加response.end
,它就可以正常工作。
所以任何人都可以解释这种奇怪的行为,为什么在没有setInterval
的情况下使用response.end
会有效。
答案 0 :(得分:0)
你发出的问题是字面意思应该发生什么。浏览器向服务器询问数据,服务器开始发送数据,并且从不发出“我做完了”的信号,以便浏览器知道消息已完成。
这里的问题是您如何从服务器将数据导入浏览器。