Nodejs:全局使用eventEmitter对象

时间:2013-06-18 19:55:18

标签: node.js eventemitter

让我们说我有3个暴露的功能:用户,帖子,文章

所有这些都需要向名为mediator的文件发送消息,其中所有事件都已设置。

目前我很难这样做

在中介文件中我有类似的东西:

var EventEmitter = require('events').EventEmitter;
  , pubsub = new EventEmitter();

exports.pubsub = new EventEmitter()

pubsub.on('loggedIn', function(msg) {
    console.log(msg);
});

以及用户,帖子和文章功能。像这样:

var mediator = require('../config/mediator')
    , _ = require('underscore')

exports.account = function(req, res) {
  var returned = _.omit(req.user._doc, 'password' )

  mediator.pubsub.emit('loggedIn', 'A User logged in');

  res.send(returned);
};

发射被完全忽略,没有错误或任何东西。不确定我是否做得对,所以任何方向都会受到赞赏。尽管如此,期望的回报仍然有效。

1 个答案:

答案 0 :(得分:23)

您将两次实例化EventEmitter,因此导出的那个不是订阅该事件的那个。这有效:

var EventEmitter = require('events').EventEmitter
  , pubsub = new EventEmitter();

exports.pubsub = pubsub;

pubsub.on('loggedIn', function(msg) {
    console.log(msg);
});