0

我是 node.js 的初学者,我对setTimeout(function(){.....},time);thingo 有一些问题。当我卷曲本地服务器但在谷歌浏览器中不符合预期时,这工作正常(我尚未测试其他浏览器)

我的代码是:

/* simple node.js createserver */

var http = require('http');

http.createServer(function (request, response) {
     response.writeHead(200);
  response.write('Somthing\r\n');

  setTimeout(function(){
        response.end('\n This came out after 5 seconds :) ');
  }, 5000);
   response.write('Hello World\n');
}).listen(8124);



console.log('Server running at http://127.0.0.1:8124/');

当我curl 127.0.0.1:8124 一切都按预期工作时。但是当我在浏览器中指出它时,它会保持空闲一段时间(我猜是 5 秒)并一次显示所有内容?这是 node.js 的预期行为还是我遗漏了什么?浏览器可以像 curl 那样做吗(即先打印两行,然后等待 5 秒再打印另一行)?

4

2 回答 2

1

尝试这个

http.createServer(function (request, response)

  response.setHeader('Content-Type', 'text/html; charset=UTF-8');
  response.writeHead(200);
  response.write('Somthing\r\n');

  setTimeout(function(){
    response.end('\n This came out after 5 seconds :) ');
  }, 5000);

  response.write('Hello World\n');
  //No point writing Hello World here as it is written immediately

}).listen(8124);
于 2013-06-30T18:07:46.413 回答
1

这是意料之中的——浏览器在完成加载之前不会显示页面(我相信大块可能会有例外,但在大多数情况下这是真的)

于 2013-06-30T17:01:07.680 回答