为什么延迟响应不工作没有一个HTML标签?

下面给出的是一个示例节点服务器代码。

//Lets require/import the HTTP module var http = require('http'); //Lets define a port we want to listen to const PORT=8080; //We need a function which handles requests and send response function handleRequest(request, response){ response.write("<p>hello</p>"); //version 1 response.write("hello"); //version 2 setTimeout(function(){ response.write("<p>world</p>"); //version 1 response.write("world"); //version 2 response.end(); }, 2000); } //Create a server var server = http.createServer(handleRequest); //Lets start our server server.listen(PORT, function(){ //Callback triggered when server is successfully listening. Hurray! console.log("Server listening on: http://localhost:%s", PORT); }); 

有两个版本的相同的代码。 尝试逐一运行。 我的疑惑是版本1中的预期延迟了。 它打印

 Hello (delay) world 

但是对于版本2来说,输出就像

 helloworld (without delay) 

这是一些依赖浏览器的行为。 您可以尝试运行curl -N localhost:8080-N是使用非缓冲stream),您将看到服务器发送响应两个部分,延迟两个版本(如您预期的那样)。

当我使用Chrome请求服务器时,它的行为如您所述。 当我在Firefox中执行相同的操作时,在两种情况下都会显示结果之前等待完全完成的响应。