Node.JS – 使用Async函数处理传入的请求

据我所知,Node.js是单线程的,一次处理一个请求。 但是,当进行asynchronous调用时,它应该能够处理新的请求,而callback尚未被调用。

所以当我向下面的服务器实现同时发出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); 

而不是用你的浏览器检查这个,你应该用另一个node.js脚本来testing它…例如,使用这个脚本:

 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代码。