2012-03-30 3 views
0

Я следую за Node.js tutorial, а в разделе «Блокировка и неблокирование» он имеет этот код, который должен демонстрировать проблемы с блокировкой.Почему этот код не блокируется в 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, он блокирует, но не в веб-браузере. Разве это уже не проблема, с которой нужно бороться по какой-то причине?

+0

Вы связались с файлом на вашем локальном компьютере. Вы лучше публикуете сам код. – Dennis

+0

Я установил ссылку и включил код. – neuromancer

+0

Ваш код должен работать, как вы вызываете функцию 'start'? – stewe

ответ

1

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

+0

Я пробовал это, и я даже очистил кеш, но это не помогло. Теперь он работает как ожидалось, но я не знаю, почему. – neuromancer

Смежные вопросы