是否可以在两个不同的文件中使用Node.js EventEmitter而无需继承EventEmitter?
我试过这个:
File1.js
var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter();
emitter.emit('eventFromFile1');
File2.js
var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter();
emitter.on('eventFromFile1', function(){
console.log('Received event'); // Never happens
});
这不起作用。我想这是因为事件发射器的两个实例存在并且它们没有连接。
如果没有继承EventEmitter,我可以实现类似的行为吗?
(我是Node.js的新手)
答案 0 :(得分:1)
无需子类,您只需要使用相同的事件发射器。在您的示例中,您有两个不同的事件发射器。
像这样:
File1.js
var EventEmitter = require('events').EventEmitter;
var emitter = module.exports.emitter = new EventEmitter();
emitter.on('my_event', function(){
console.log('Received event'); // Never happens
});
File2.js
var emitter = require('./File1.js').emitter;
emitter.emit('my_event');