我有一个继承自 EventEmiter“类”的对象。
它有很多事件 ( emitter.on
),我不知道它们的名字。
我怎样才能得到他们的名字?我该如何处理所有事件?
我有一个继承自 EventEmiter“类”的对象。
它有很多事件 ( emitter.on
),我不知道它们的名字。
我怎样才能得到他们的名字?我该如何处理所有事件?
您无法以编程方式获取将在特定事件发射器上发射的所有可能事件。但是,您可以通过阅读源代码来做到这一点。
据我所知,在运行时处理所有事件的唯一方法是覆盖emit
那个 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
EventEmitter 也有自己的事件,其中之一:newListener
,添加新的监听器时将传递事件名称和回调函数。
此外,您可以使用emitter.listeners
以获取特定事件名称的回调函数列表。
您可能希望使用一个事件名称,并发送带有对象名称标识的对象,这样您就可以拥有一个事件,但对它的响应不同。