Проследовали за этим сказочным tutorial. Будучи новичком в Javascript и функциональном программировании, я хотел понять, что означает неблокирование. Я намеренно добавил «сон» в 10 секунд в моем JS-коде, чтобы добиться блокировки.Новый запрос на Node.js неблокирующее поведение
function route(pathname, handle)
{
console.log("About to route a request for :"+pathname);
if(typeof handle[pathname]==='function')
{
handle[pathname]();
}
else
{
console.log("No request handler for "+pathname);
}
sleep(10000);
console.log("Exiting router");
}
function sleep(milliSeconds)
{
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}
exports.route=route;
Этот код используется как обратный вызов из другого сценария «сервер», который я вызываю из браузера. Я ожидал, что как только я отправлю одновременно 100 запросов на мой серверный скрипт, я получаю параллельные 100 ответов через 10 секунд. Но этот код проходит через запрос один за другим. Это, безусловно, не соответствует философии, стоящей за node.js правильно? Это даже не происходит, когда я делаю такой плохой код в сервлете Java и запускаю Tomcat!
Другое наблюдение в этом случае заключалось в том, что запросы не обрабатывались в хронологическом порядке - они выполняются случайным образом. Это звучит не очень хорошо!
Я считаю, что есть некоторая проблема с моим кодом - пожалуйста, помогите мне разобраться в концепциях здесь, с ответами на мои 2 вопроса (другой по хронологии).
Спасибо!
http://stackoverflow.com/questions/5670190/how-do-i-write-non-blocking-code-in-node-js –