Ответ 1
Как работает излучатель событий, вы должны использовать объект-эмиттер событий тот же, чтобы прослушивать то, что вы использовали для испускания. Поэтому вам нужно что-то вроде этого:
Чтобы поделиться этим с другими частями вашего проекта, вы должны создать модуль из него и потребовать его там, где это необходимо.
my-event.js:
var eventEmitter = new require('events').EventEmitter();
module.exports = eventEmitter;
Затем вы require
этот eventEmitter
, где хотите его использовать
blog.js:
var myEvent = require('../my-event');
blog.post('save',function(blog){
myEvent.emit('newBlog', blog);
});
app.js:
var myEvent = require('./my-event');
myEvent.on('newBlog', console.log);
Если вы не хотите беспокоиться о создании и требовании своего собственного модуля, вы можете использовать глобальный process
, который также является EventEmitter.
anywhere:
process.on('my-custom-event', myCustomHandler);
anywhere-else:
process.emit('my-custom-event', data);
Хотя справедливое предупреждение : вы загрязняете глобальную область. Если какой-то другой модуль также делает то же самое и использует те же имена событий, то у вас есть конфликт, который может возникнуть неожиданным образом и еще сложнее отладить.