我在具有導出的類函數構造函數的Node.js中創建一個模塊。我爲這個類添加了2個原型函數,但我也有一些獨立函數。運行函數時Node.js設置'this'
我用作事件和回調內部類的處理程序的普通函數。我不想將這些函數作爲類原型的一部分公開。
在自由站立功能的鏈接中,我想引用模塊構建的主類,以便可以發出事件(我使用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
我想知道該怎麼做!儘管如此,我仍然遇到問題,因爲我的回調具有結果的上下文。例如,我的''api.callApi(回調);''是'mysqlConnection.query(「select * from tablex」,callback);'我給你一個+1但我要新... –
對不起不完整的例子我的代碼需要大量共享,如果沒有我的外部服務器,需要花費大量精力來模擬我正在使用的連接。任何建議如何分享很多代碼? –
JSFiddle非常適合共享代碼。投票我的答案將是偉大的,但直到你獲得聲望,你不能。你仍然可以接受這個答案! :-) – Forbesmyester