javascript - 在 node.js 中的两个 javascript 文件之间发送和接收事件
问题描述
我正在尝试使用 EventEmitter 在两个 javascript 文件之间进行通信,但我很难让它在两个方向上工作。
我有 server.js:
let api = require('./api')
// Does not work
api.on("yo", data => {
console.log(data)
})
// Works
api.emit("ready", "Server ready")
和 api.js:
const EventEmitter = require('events')
let api = new EventEmitter()
// Works
api.on("ready", data => {
console.log(data)
})
// Does not work
api.emit("yo", "yo yo")
module.exports = api
server.js
能够向 发出事件api.js
,但反之则不行。我已经尝试过 module.exports 并同时分别要求两个文件,但这会导致错误。
如何在这两个文件之间完成双向发射/开启?
解决方案
起初 api.js 被初始化,那时还没有人订阅 'yo' 事件。因此,您根本不应该在任何模块初始化期间发出任何事件。之后尝试以某种方式发出事件。
或者,您可以将所有订阅内容移动到另一个模块中,在所有订阅完成后,您可以在其中发出任何事件。
推荐阅读
- google-bigquery - 如何过滤掉谷歌bigquery中的空值
- python - Pexpect 脚本为输出提供“无”
- javascript - 按下外模态时停止关闭模态
- flutter - 如何在颤振中检索嵌套的json数组?
- mongodb - 如何匹配从 mongo db 查找操作返回的数组对象的值?
- ios - preferredStatusBarStyle 在 iOS 13 和其他版本中没有被调用
- javascript - allMarkdownRemark 不返回任何结果
- html - 使用 CSS 在页面上的 div 中居中 3 个按钮
- r - 以最少的输入将函数应用于 R 中的最后一个结果
- django - 多个 ValidationError 函数的正确语法是什么?