node.js如何处理同时的http请求?

时间:2014-07-24 13:21:44

标签: node.js race-condition

我正在学习node.js,而我无法找到这个问题的直接答案。 node.js如何处理HTTP传入请求,如果它们几乎同时进入?假设一个HTTP请求在给定时间进入。因此,全局变量的值可能会发生变化。但是,几乎在同一时间,另一个请求进入。为了服务新请求,需要一个全局变量的值,但第一个请求的代码仍在执行。节点如何对此作出反应?

1 个答案:

答案 0 :(得分:2)

Node.js一个接一个地处理请求。只有一个主题。

但是,如果您在数据库中查询某些信息并传递回调,则在执行查询时,node.js可以处理新请求。数据库查询完成后,node.js将调用回调并完成第一个请求的处理。

编辑:

简单的服务器示例:

var http = require('http');
var numresponses = 0;
http.createServer(function (request, response) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('This is response #' + (++numresponses));
}).listen(80);

即使两个请求同时发生,该服务器也会始终打印出请求的编号,节点将选择一个先处理的编号,两者的编号都不同。