事件发射器的工作方式是您必须使用相同的事件发射器对象来监听您曾经发出的事件。所以你需要这样的东西:
要在项目的不同部分之间共享它,您应该从中创建一个模块并在需要的地方使用它。
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 的 global。
anywhere:
process.on('my-custom-event', myCustomHandler);
anywhere-else:
process.emit('my-custom-event', data);
尽管是一个公平的警告:您正在污染全局范围。如果其他一些模块也在做同样的事情并使用相同的事件名称,那么你就有可能以意想不到的方式出现并且更难调试的冲突。