下面的程序将挂在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