16

假设我有 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);
};

发射被完全忽略,没有错误或任何东西。不确定我是否做得对,所以任何方向都会受到赞赏。不过,期望的回报是按预期工作的。

4

1 回答 1

30

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

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

exports.pubsub = pubsub;

pubsub.on('loggedIn', function(msg) {
    console.log(msg);
});
于 2013-06-18T22:01:32.840 回答