2012-03-30 15 views
0

私はNode.js tutorialに従っています。「ブロッキングとノンブロッキング」のセクションでは、ブロッキングに関する問題を示すこのコードがあります。なぜNode.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); 

index.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; 

Iはhttp://localhost:8888/starthttp://localhost:8888/uploadをロードしようとしました。彼らはブロッキングのためにロードに10秒かかると思われますが、両方ともすぐにロードされます。どうして? sleep.()関数をnode.jsで直接実行するとブロックされますが、Webブラウザではブロックされません。これはもはや何らかの理由で対処しなければならない問題ではありませんか?

+0

ローカルマシンのファイルにリンクしました。あなたは、コード自体を投稿する方が良いです。 – Dennis

+0

私はリンクを修正し、コードも含めました。 – neuromancer

+0

あなたのコードはうまくいくはずです。どうやって 'start'関数を呼び出しますか? – stewe

答えて

1

コードは良好です。ブラウザが応答をキャッシュしている可能性があります。 ?random = 1234をURLに追加して、それが長くかかるかどうかを確認してください。

+0

私はそれを試み、私はキャッシュをクリアしましたが、助けにはなりませんでした。今は期待どおりに働いていますが、私はなぜそれがわかりません。 – neuromancer

関連する問題