首页 > 解决方案 > 在 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 并同时分别要求两个文件,但这会导致错误。

如何在这两个文件之间完成双向发射/开启?

标签: javascriptnode.jseventemitter

解决方案


起初 api.js 被初始化,那时还没有人订阅 'yo' 事件。因此,您根本不应该在任何模块初始化期间发出任何事件。之后尝试以某种方式发出事件。

或者,您可以将所有订阅内容移动到另一个模块中,在所有订阅完成后,您可以在其中发出任何事件。


推荐阅读