javascript - 使用 Node.js EventEmitter 而不使用子类化

标签 javascript node.js eventemitter

是否可以在两个不同的文件中使用 Node.js EventEmitter,而不需要子类化 EventEmitter?

我已经尝试过这个:

文件1.js

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

emitter.emit('eventFromFile1');

文件2.js

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

emitter.on('eventFromFile1', function(){
    console.log('Received event'); // Never happens
});

这不起作用。我猜这是因为事件发射器的两个实例存在并且它们没有连接。

我可以在不继承 EventEmitter 的情况下实现类似的行为吗?

(我是 Node.js 新手)

最佳答案

无需子类化,只需使用相同的事件发射器即可。在您的示例中,您有两个不同的事件发射器。

像这样:

文件1.js

var EventEmitter = require('events').EventEmitter;
var emitter = module.exports.emitter = new EventEmitter();

emitter.on('my_event', function(){
    console.log('Received event'); // Never happens
});

文件2.js

var emitter = require('./File1.js').emitter;
emitter.emit('my_event');

关于javascript - 使用 Node.js EventEmitter 而不使用子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350637/

相关文章:

javascript - 如何使用 Passport.js 循环遍历用户并将用户列表打印到 DOM 中

javascript - 函数到 es6 类基样式

javascript - 我什么时候应该使用多个事件名称和不同的事件发射器?

angular - Angular2 EventEmitter 我做错了什么?

asp.net - 使用 javascript、jquery 将 .ascx 页面呈现为 .aspx 页面

javascript - 如何在使用 javascript 保存时覆盖现有文件?

javascript - jQuery 单击多个 Action

javascript - AmChart 不显示第二个 y 轴

javascript - 在 node.js 中使用哈巴狗在表单 "post"之后发送空 {}

javascript - 使用 Express NodeJS Rest api 样板创建新路线