[英]Event Loop and EventEmitter in Node JS
我写了一些基本的Node.js代码,其中包含
process.nextTick()
的递归函数myFunction
两个块都发出事件,代码如下
var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter();
var counter = 1;
emitter.on('message',
(message)=>
{
console.log('Hey I have got this message ' +message);
}
);
emitter.on('syncMsg',
(message)=>
{
console.log('voila the sync message is ' +message);
}
);
function myFunction(){
process.nextTick(
()=>
{
emitter.emit('message','message'+counter);
counter++;
myFunction();
}
)
}
myFunction();
for(var i=0;i<10000;i++)
{
emitter.emit('syncMsg','syncMsg'+counter);
counter++;
}
现在,在执行文件时, syncMsg
事件的侦听器syncMsg
被同步触发,甚至在为message
事件发出单个事件之前也是如此。 为什么执行同步?
message
事件将仅在事件循环的下一个滴答时发出,该循环在您的for
循环(立即发出事件)完成后的一段时间内发生,并且当前滴答无声。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.