简体   繁体   English

Nodejs:全局使用eventEmitter对象

[英]Nodejs: use eventEmitter object globally

Lets say I have 3 exposed functions: user, posts, articles 可以说我有3个暴露的功能:用户,帖子,文章

all of which needs to emit messages to a file called mediator where all of the events are set. 所有这些都需要将消息发送到名为mediator的文件,其中设置了所有事件。

Currently I'm have trouble doing so 目前我很难这样做

In the mediator file i have something like so: 在中介文件中,我有类似的东西:

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

exports.pubsub = new EventEmitter()

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

and in the user, post and article functions. 以及用户,帖子和文章功能。 Something like so: 像这样的东西:

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);
};

The emit is getting completely ignored, no error or anything. 发射被完全忽略,没有错误或任何东西。 Not sure if I'm doing it right so any direction would be appreciated. 不确定我是否做得对,所以任何方向都会受到赞赏。 The desired return is work as expected though. 尽管如此,期望的回报仍然有效。

You're instantiating the EventEmitter twice, so the exported one is not the one that subscribes to the event. 您将两次实例化EventEmitter,因此导出的不是订阅该事件的那个。 This works: 这有效:

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

exports.pubsub = pubsub;

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM