node.js - 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
在函数中,它就可以工作。
解决方案
您创建的每个EventEmitter
对象都是一个新实例,因此从第一个触发的事件不会在第二个触发。您需要使用相同的EventEmitter
对象。
推荐阅读
- c# - 单击其他项目的按钮后,是否可以在构造函数运行时添加一些代码?
- java - 当我使用套接字通过本地网络传输文件时,如何防止文件损坏?
- python - 从 Selenium 中的容器中单击每个 div
- javascript - 如何从javascript中的字符串中删除单词数组?
- css - 如何使用 CSS 在叠加层中获得 100% 的宽度
- django - 如何使用 AWS 免费托管 Web 应用程序(Docker、Nginx、Angular、Django)?
- service-worker - Serviceworker 注册 - 奇怪的问题
- c# - 拼写检查不工作 WPF 应用程序
- android - 致命异常:DatabaseException:无法将 java.lang.String 类型的对象转换为 com.accentra.retrivedatabase.User 类型
- .net - 我可以在多个 Visual Studio IDE 中打开同一个项目以同时工作吗