【发布时间】:2013-04-17 18:48:26
【问题描述】:
我正在 Node.js 中创建一个具有导出类函数构造函数的模块。我在该类中添加了 2 个原型函数,但我也有一堆独立的函数。
我在类内部用作事件和回调处理程序的普通函数。我不想将这些函数作为类原型的一部分公开。
在独立函数的链接中,我想引用构建模块的主类,以便我可以发出事件(我使用了util.inherits(myclassconsructor, EventEmitter))。但是在我的内部函数中this 是不正确的。我尝试为名为 self 的模块创建一个全局变量,并将 self = this 作为构造函数的第一行。
然后我检查了如果我做了self.on("message name", function() {console.log("worked")});,它确实有效。
然后我转到构建相关模块的主模块并创建上述模块并绑定到同一事件。我没有收到模块外的事件...
模块 A
var self;
function A() {
self = this;
self.on('message name', function() { console.log('test') }); // Firing
doStuff();
}
function doStuff() {
api.callApi(callback);
}
function callback() {
self.emit('message name');
}
模块 B
var a = new A();
a.on('message name', domystuff); // Not firing
function domystuff() {
console.log('my stuff');
}
发现这个线程似乎是我遇到的问题,但我无法重现结果。 node.js eventEmitter + http.request
【问题讨论】:
标签: javascript node.js eventemitter