Node.js славится параллелизмом, однако я смущен тем, как заставить его работать одновременно. Я начал два запроса от Chrome один за другим очень быстро, и я ожидал, что выходы в консоли должны быть:Как сделать узел работает одновременно?
- «получить новый запрос»
- сразу после второго запроса «получить новый запрос "должны быть напечатаны
- через несколько секунд,„конец новый запрос“
- через несколько секунд,„конец новый запрос“
Однако то, что я увидел это:
- «получить новый запрос»
- через несколько секунд, «закончить новый запрос»
- «получить новый запрос»
- после нескольких секунд , закончить новый запрос
Это означает, что второй запрос не обрабатывается, пока первый не будет сделано. Ниже мой пример кода, что я пропустил?
var http = require("http");
var url = require("url");
function start(route) {
http.createServer(function(request, response) {
console.log('get a new request');
// a time consuming loop
for (var i=0; i<10000000000; ++i) {
}
route(url.parse(request.url).pathname);
response.writeHead(200, {"Content-Type": "text/plain"});
response.end();
console.log('end the new request');
}).listen(5858);
}
function saySomething(something) {
console.log(something);
}
exports.start = start;
exports.saySomething = saySomething;
Посмотрите на http://code.tutsplus.com/tutorials/node-js-for-beginners--net-26314 для учебника и на http://stackoverflow.com/questions/6898779/how -to-write-asynchronous-functions-for-node-js для возможного ответа – randunel
node.js славится своей асинхронной моделью, я думаю, а не ее параллельной моделью. «Сервер» в этом случае должен обрабатывать обратные вызовы. –