繁体   English   中英

Node JS中的事件循环和EventEmitter

[英]Event Loop and EventEmitter in Node JS

我写了一些基本的Node.js代码,其中包含

  1. 一个带有process.nextTick()的递归函数myFunction
  2. 长时间运行的循环

两个块都发出事件,代码如下

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM