未收到 EventEmitter 事件

EventEmitter event not received

我有 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 在单独的 window 中时,它立即退出执行,我如何使订阅者实际收听发布者的工作

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

最好将 a.js 更改为:

以调整您的示例以使其正常工作
const EventEmitter = require('events');
const publisher = require('./b');
const subscriber = require('./c');

const myEmitter = new EventEmitter();

module.exports = myEmitter;

然后运行a.js一个人。这将 运行 发布者和订阅者在同一个进程中。