多窗口访问时请求阻塞
发布于 13 年前 作者 supersheep 4593 次预览 最后一次回复是 13 年前 来自
我按照范例,写了一个简单的httpServer来学习Node异步事件驱动的编程。代码如下
var http = require('http');
http.createServer(function(req,res){
console.log("req",req.url);
setTimeout(function(){
console.log("res",req.url);
res.writeHead(200,{"Content-Type":"text/plain"});
res.write("hello");
res.end();
},3000);
}).listen(3000);
当我浏览localhost:3000并反复刷新时,terminal显示
req / req / req / res / res / res /
与预期的相同
而当我通过
for(var i = 0;i<5;i++){
window.open("http://localhost:3000/");
}
在浏览器中打开多个窗口访问时,却变成了同步执行,最后一个窗口过了很久才返回。
这是什么原因呢?
4 回复
同步执行的效果是:第一个请求3秒后返回,第二个6秒后返回,第三个9秒……你说的最后一个窗口过了很久才返回是什么意思?其他请求呢?
是的,就是这样。修改后的真实代码是这样的:
运行结果:
直接在同一个窗口 Command + R 五次返回的就是
系统环境是mac lion, node v0.6.11
@supersheep 既然有第二个说明没啥问题么,第一个是怎么“运行”出来的?
@jeffz chrome开五个窗口分别访问。刚才又拿safari测试了一下,一切正常。看来是chrome window.open时候的问题。