为什么settimeout阻塞eventloop
注意:对于那些关于settimeout的post,这不是一个复制的post,这里的关键答案是浏览器devise选项。
我开始研究node.js:一个简单的例子来testingasynchronous:
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")
一个有趣的事情是它在命令lind和curl和浏览器中的行为是不一样的:在Ubuntu 12.10中,我在两个控制台中使用curl localhost:8080,它们在几乎相同的10个响应中响应。
但是,我打开了两个浏览器,几乎同时提出请求,但整个过程花了我20秒?
谢谢。
这是浏览器等待,而不是node.js
如果运行服务器并在两个选项卡中请求http://localhost:8080/
,则需要20秒,因为浏览器在开始第二个请求之前等待第一个请求到同一个url。
如果运行服务器并在两个选项卡中请求http://localhost:8080/1
和http://localhost:8080/2
,则需要10秒。
- 我怎样才能用“Q`与mongoose绑定`save`方法
- 对Expressjs / Nodejs请求 – 响应处理感到困惑
- 使用Node-GYP完成ArangoDB的哪些部分
- 通过我的Facebook应用程序处理Facebook注册 – 使用nodejs everyauth
- 玉和EJS节点
- 在express.js中的每个请求上设置全局res.localvariables
- Uncaught InvalidCharacterError:无法从base64映像转换为blob
- AJAX调用nodeJS和expression成功,但不显示数据
- node.js + express error:无法读取未定义的属性'url'