エクスポートされたクラス関数コンストラクターを持つ Node.js でモジュールを作成しています。そのクラスに 2 つのプロトタイプ関数を追加しましたが、独立した関数もたくさんあります。
クラスの内部でイベントとコールバックのハンドラーとして使用する単純な関数。これらの関数をクラス プロトタイプの一部として公開したくありません。
フリースタンディング関数のチェーンでは、モジュールが構築されているメインクラスを参照して、イベントを発行できるようにしたいと考えています (私は を使用しutil.inherits(myclassconsructor, EventEmitter)
ました)。しかし、私の内部機能this
では正しくありません。selfというモジュールにグローバル変数を作ってみたりself = this
、コンストラクタの1行目にしました。
次に、それを実行した場合、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