1

エクスポートされたクラス関数コンストラクターを持つ 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

4

1 に答える 1