6

注意:这不是关于 settimeout 的复制帖子,这里的关键答案是浏览器设计选项。

我开始学习node.js:一个测试异步的简单示例:

var http=require('http');

http.createServer(
    function(request, response){


        response.writeHead(200);
        response.write("Hello, dog is running");
        setTimeout(
            function(){
                response.write("Dog is done");
                response.end();
            },
            10000
        );

    }
).listen(8080);
console.log("Listen on port 8080") 

一件有趣的事情是它的行为在带有 curl 的命令行和浏览器中是不同的:在 Ubuntu 12.10 中,我在两个控制台中使用 curl localhost:8080,它们在几乎相同的 10 次发送中响应。

但是,我打开两个浏览器,几乎同时发出请求,但整个过程花了我 20 秒?

谢谢。

4

1 回答 1

19

等待的是浏览器,而不是 node.js

如果您http://localhost:8080/在两个选项卡中运行服务器并请求,则需要 20 秒,因为浏览器会在启动第二个之前等待对相同 url 的第一个请求。

如果您运行服务器并请求http://localhost:8080/1http://localhost:8080/2在两个选项卡中再次需要 10 秒。

于 2013-04-06T17:30:21.633 回答