使用Node.js EventEmitter而不进行子类化

时间:2015-09-02 10:24:54

标签: javascript node.js eventemitter

是否可以在两个不同的文件中使用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的新手)

1 个答案:

答案 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');