捕获不同模块中的事件
我在我的节点应用程序中的一些模块中创build事件,我想在其他模块中捕获此事件,我尝试以下不工作
提高事件的模块
EventEmitter = require("events").EventEmitter; function updatePort(port) { ... var ee = new EventEmitter(); ee.emit("AppDef"); }
现在我想在不同的模块中捕获这个事件并将其打印到控制台
EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); ee.on("AppDef", function () { console.log('Port is defiend ' + port); })
我认为问题是我做了两次,但不知道如何克服这个新的…
问题是,您正在创build两个不同的EventEmitter
实例,并且您正从一个实例发出并在另一个实例中侦听事件。
为了解决这个问题,你需要在模块之间共享同一个EventEmitter
实例
第一单元
var EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); function updatePort(port) { ... // emit the port as well ee.emit("AppDef", port); } // export the EventEmitter instance module.exports.ee = ee;
第二单元
var mod1 = require('./module1'); // Attach the listener on the EventEmitter instance exported by module1 mod1.ee.on('AppDef', function(port) { console.log('Port is defined ' + port); });