未收到 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一个人。这将 运行 发布者和订阅者在同一个进程中。
我有 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一个人。这将 运行 发布者和订阅者在同一个进程中。