2015-09-02 2 views
1

Возможно ли использовать Node.js EventEmitter в двух разных файлах без подкласса EventEmitter?Использование Node.js 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)

+3

Вы должны экспортировать экземпляр первого эмиттера и требуют его в 'File2.js'. –

+0

как бы * подклассификация * (?) Вам помогла? – Amit

+1

Правильно, я могу просто экспортировать эмиттер в File1 и использовать его в File2 вместо создания нового экземпляра. Спасибо, это работает! – KMK

ответ

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'); 
Смежные вопросы