据我所知,Node.js是单线程的,一次处理一个请求。但是,在进行异步调用时,它应该能够处理新的请求,而回调尚未被调用。
因此,当我同时向以下服务器实现发出3个请求时,为什么第一个响应等待10秒,第二个响应等待20秒,第三个响应等待30个?
var express = require('express');
var app = express();
app.get('*', function(req, res) {
setTimeout(function(){
res.end('done')
},10000)
});
app.listen(8000);
答案 0 :(得分:1)
您应该使用另一个node.js脚本测试它,而不是使用浏览器进行检查...例如,使用此脚本:
var http = require('http');
function test(timestamp) {
http.get('http://127.0.0.1:8000',function(res) {
console.log(new Date() - timestamp);
});
}
for (var i = 0 ; i < 5 ; i++) {
test(new Date().getTime());
}
我得到以下结果(将您的代码用作http服务器):
> node test.js
10032
10029
10029
10029
10030
所以似乎问题不在于你是node.js代码。