何时在 Node js 中使用 eventEmitter?

Ash*_*Jha 6 javascript events node.js eventemitter

我正在学习 Node js 中的新概念,即事件,但我找不到应该在哪里使用它,我想要任何真实的场景,但我找不到任何关于此的文章或博客。

var events = require('events');
var eventEmitter = new events.EventEmitter();

//Create an event handler:
var myEventHandler = function () {
  console.log('I hear a scream!');
}

//Assign the event handler to an event:
eventEmitter.on('scream', myEventHandler);
eventEmitter.on('test', function(){
    console.log("Testing event");
});

//Fire the 'scream' event:
eventEmitter.emit('scream');
eventEmitter.emit('scream');
eventEmitter.emit('test');
Run Code Online (Sandbox Code Playgroud)

我可以通过简单的调用函数来实现同样的事情,比如myEvenHandler()

Héc*_*tor 5

是的,在你的情况下你可以直接打电话myEventHandler(),但这是一个天真的例子。想象一下您想要监听来自发射器的不同事件。例如,在 Mongoose 数据库中:

mongoose.connect(databaseUrl); 

mongoose.connection.on('connected', function () {  
    //connected successfully
}); 

mongoose.connection.on('error',function (err) {  
    //connection error
}); 

mongoose.connection.on('disconnected', function () {  
    //disconnected
});
Run Code Online (Sandbox Code Playgroud)

您可以将 3 个回调传递给connect()方法,但通过使用EventEmitter您可以拥有更具可读性的代码(至少对我来说),并且它允许您在整个应用程序中拥有多个侦听器。