javascript - 在EventEmitter上,我如何知道我可以监听的所有事件?

标签 javascript node.js events event-handling eventemitter

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

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

最佳答案

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

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

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

但是,由于这没有记录,我建议您谨慎对待。

编辑:某些模块提供可能事件的列表,例如参见 SAX (以及 corresponding source )。

关于javascript - 在EventEmitter上,我如何知道我可以监听的所有事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927008/

相关文章:

javascript - 函数开始一遍又一遍地重复

javascript - 如果我在 javascript 中重写 window.onerror 我应该返回 true 还是 false?

c# - 在不同的屏幕分辨率上处理图片标签的更好方法。

javascript - 替换javascript中的一些字符串

node.js - 当我尝试创建一个 react 应用程序时,它给出了一个错误

javascript - 如何使用参数设置 Express 路线

javascript - 将子对象的父对象添加到监听器会导致 Node.js 中的保留循环吗?

javascript - 定位父 div 不起作用

javascript - Node.js 应用程序中的 JSON 正文始终为空

javascript - 谷歌 polymer : Listening to property changes from outside the element