以下は私のnodejsコードです
var emitter = require('events'),
eventEmitter = new emitter.EventEmitter();
eventEmitter.on('data', function (result) { console.log('Im From Data'); });
eventEmitter.on('error', function (result) { console.log('Im Error'); });
require('http').createServer(function (req, res) {
res.end('Response');
var start = new Date().getTime();
eventEmitter.emit('data', true);
eventEmitter.emit('error', false);
while(new Date().getTime() - start < 5000) {
//Let me sleep
}
process.nextTick(function () {
console.log('This is event loop');
});
}).listen(8090);
Nodejsはシングルスレッドであり、イベントループで実行され、同じスレッドがイベントを処理します。したがって、上記のコードでは、localhost:8090ノードスレッドへのリクエストで、リクエストの処理でビジー状態を維持する必要があります[5秒間スリープします]。
同時に、eventEmitterによって発行される2つのイベントがあります。したがって、これらのイベントは両方とも、要求が処理された後の処理のためにイベントループのキューに入れられる必要があります。
しかし、それは起こっていません、私はそれらが放出されるときに同期的に提供されているイベントを見ることができます。
それは期待されていますか?期待どおりに機能する場合は、イベントモジュールを拡張する必要がないことを理解しています。しかし、eventEmitterによって発行されたイベントはどのように処理されますか?