0

EventEmiter の「クラス」から継承したオブジェクトがあります。

多くのイベント ( emitter.on) があり、それらの名前がわかりません。
どうすれば名前を取得できますか? また、すべてのイベントを処理するにはどうすればよいですか?

4

2 に答える 2

2

特定のイベント エミッターで発行される可能性のあるすべてのイベントをプログラムで取得することはできません。ただし、ソースコードを読むことでできる場合があります。

私が知っている実行時にすべてのイベントを処理する唯一の方法は、emitその 1 つの EventEmitter の関数を上書きすることです。イベントが発行されるたびにコードが呼び出され、元の関数に転送できます。

var EventEmitter = require("events").EventEmitter

var emitter = new EventEmitter();

emitter.on('test', function(t) {
    console.log('Handled test', t);
});

var old_emit = emitter.emit;
emitter.emit = function() {
    console.log("Intercepted", arguments);
    old_emit.apply(emitter, arguments);
}

emitter.emit('test', 'hi');
emitter.emit('something', 'else');

デモ: http://ideone.com/RfqFvx

于 2013-07-11T11:42:14.767 に答える