2

假设我有一个继承自的对象EventEmitter,例如流或任何其他对象,是否有一种好方法可以了解我可以收听的所有事件以及所有附加的事件侦听器?

我认为问题的第二部分很简单,emitter.listeners(event)将告诉我所有听众的一个事件。但是有没有办法事先知道我可以听的所有事件?

4

1 回答 1

3

据我所知,没有公共 API 或文档可以帮助您列出 EventEmitter 可以发出的所有事件。

但是如果查看EventEmitter 源代码,可以看到所有事件都存储在_events属性中,因此您的代码可以循环对象的键并找到所有可能的事件。以下是有关如何列出事件名称的示例:

var ee = new SomeEventEmitter();
console.log(Object.keys(ee._events));

但是,由于这是无证的,我建议您对此要小心。

编辑:一些模块提供了可能的事件列表,例如参见SAX(和相应的源)。

于 2013-11-12T10:56:56.353 回答