Почему этот код не блокируется в Node.js? - PullRequest
0 голосов
/ 31 марта 2012

Я следую учебному пособию по Node.js , и в разделе «Блокировка и неблокирование» есть код, который должен продемонстрировать проблемы с блокировкой.

function start() {
      console.log("Request handler 'start' was called.");

      function sleep(milliSeconds) {
          var startTime = new Date().getTime();
          while (new Date().getTime() < startTime + milliSeconds);
      }

      sleep(10000);

      return "Hello Start";
}

function upload() {
      console.log("Request handler 'upload' was called.");
      return "Hello Upload";
}

exports.start = start;
exports.upload = upload;

index.js

var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");

var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;

server.start(router.route, handle);

Я попытался загрузить http://localhost:8888/start и http://localhost:8888/upload. Предполагалось, что для загрузки обоих из-за блокировки требуется 10 секунд, но они оба загружаются мгновенно. Зачем? Если я запускаю функцию sleep () непосредственно в node.js, она блокируется, но не в веб-браузере. Разве это больше не является проблемой, которую нужно решать по какой-то причине?

1 Ответ

1 голос
/ 31 марта 2012

Ваш код выглядит хорошо, возможно, ваш браузер кэширует ответ.Попробуйте добавить? Random = 1234 к URL-адресам и посмотрите, не займет ли это больше времени.

...