未收到EventEmitter事件

时间:2019-04-22 13:27:34

标签: node.js events eventemitter

我有3个文件

a.js共享的EventEmitter模块

const EventEmitter = require('events');

const myEmitter = new EventEmitter();

module.exports = myEmitter;

b.js发布者

const myEmitter = require('./a');

// Perform the registration steps

let user = 1;

setInterval(() => {
    myEmitter.emit('user-registered', user);    
    user++;
}, 1000);

// Pass the new user object as the message passed through by this event.

c.js订阅者

const myEmitter = require('./a');

myEmitter.on('user-registered', (user) => {
  // Send an email or whatever.
  console.log(user);

});

当我运行b.js或发布者时,事件将连续发布,但是当我在单独的窗口中运行c.js时,事件立即退出执行,我该如何在订阅者实际收听发布者的情况下进行此项工作

1 个答案:

答案 0 :(得分:1)

您遇到的麻烦是,您试图在一个流程中发布事件,并在一个单独的流程中监听它们。核心事件API不适用于这种进程间通信。

调整示例以使其正常工作最好通过将 a.js 更改为:

const EventEmitter = require('events');
const publisher = require('./b');
const subscriber = require('./c');

const myEmitter = new EventEmitter();

module.exports = myEmitter;

然后单独运行 a.js 。这将在同一过程中同时运行发布者和订阅者。