Node.JS - 使用异步函数处理传入请求

时间:2015-01-31 10:31:20

标签: node.js

据我所知,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);

1 个答案:

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