下面的程序將掛在NodeJS中,有人知道爲什麼嗎?爲什麼'nextTick'在這裏表現不如預期?
ended = false; events = require('events'); eventEmitter = new events.EventEmitter(); eventEmitter.on('end', function() { ended = true; }); setTimeout(function() { eventEmitter.emit('end'); }, 100); while (!ended) { process.nextTick(); } console.log('ended');
JavaScript不是單線程的。大多數JavaScript *實現*實現它單線程,包括所有當前的瀏覽器(禁止使用[web workers](http://www.w3.org/TR/workers/))和V8,Node中的引擎(和鉻)。但是有多線程實現,包括Rhino(犀牛將JavaScript編譯爲JVM字節碼,並且JVM是多線程的)。 – 2012-07-26 13:55:36
@ T.J.Crowder不夠公平。我已將其更改爲「Node.JS」。 – freakish 2012-07-26 13:57:32