我正在学习node.js,而我无法找到这个问题的直接答案。 node.js如何处理HTTP传入请求,如果它们几乎同时进入?假设一个HTTP请求在给定时间进入。因此,全局变量的值可能会发生变化。但是,几乎在同一时间,另一个请求进入。为了服务新请求,需要一个全局变量的值,但第一个请求的代码仍在执行。节点如何对此作出反应?
答案 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);
即使两个请求同时发生,该服务器也会始终打印出请求的编号,节点将选择一个先处理的编号,两者的编号都不同。