私は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/startとhttp://localhost:8888/uploadをロードしようとしました。彼らはブロッキングのためにロードに10秒かかると思われますが、両方ともすぐにロードされます。どうして? sleep.()関数をnode.jsで直接実行するとブロックされますが、Webブラウザではブロックされません。これはもはや何らかの理由で対処しなければならない問題ではありませんか?
ローカルマシンのファイルにリンクしました。あなたは、コード自体を投稿する方が良いです。 – Dennis
私はリンクを修正し、コードも含めました。 – neuromancer
あなたのコードはうまくいくはずです。どうやって 'start'関数を呼び出しますか? – stewe