我有一个继承自EventEmiter“class”的对象。
它有很多事件(emitter.on
),我不知道他们的名字
我怎样才能得到他们的名字?我怎样才能处理所有事件?
答案 0 :(得分:2)
您无法以编程方式获取将在特定事件发射器上发出的所有可能事件。但是,您可以通过阅读源代码来实现此目的。
我知道,在运行时处理所有事件的唯一方法是覆盖那个EventEmitter的emit
函数。每当发出一个事件时,你的代码就会被调用,你可以将它转发给原始函数。
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');
答案 1 :(得分:1)
EventEmitter也有自己的事件,其中之一:newListener
,它将在添加新的侦听器时传递事件名称和回调函数。
此外,您可以使用emitter.listeners
获取特定事件名称的回调函数列表。
您可能想要使用一个事件名称,并发送带有对象名称标识的对象,这样您就可以拥有一个事件,但对它的响应会有所不同。