首页 > 解决方案 > Emit and on - 函数内单独 emodule 中的 NodeJS

问题描述

我有简单的模块 - logger.js

var EventEmitter = require('events');
var emitter = new EventEmitter();

const log = (message) => {
   emitter.emit('logging');
    console.log('here')
}

module.exports.log= log;

我在另一个文件中导入:

const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('logging', () => {
    console.log('Logging:')
});

const logger = require('./logger');
logger.log(90);

,我看到90了 - 消息,但我没有看到console.log('Logging:'),为什么会这样?

如果我将所有内容放在一个文件中,而不包含emit在函数中,它就可以工作。

标签: node.jsevents

解决方案


您创建的每个EventEmitter对象都是一个新实例,因此从第一个触发的事件不会在第二个触发。您需要使用相同的EventEmitter对象。


推荐阅读