簡體   English   中英

在EventEmitter上,我如何知道我可以收聽的所有事件?

[英]On an EventEmitter, how can I know all the events I can listen to?

假設我有一個從EventEmitter繼承的對象,例如流或其他任何對象,是否有很好的方法知道我可以收聽的所有事件以及所有附加的事件偵聽器?

我認為問題的第二部分很簡單, emitter.listeners(event)會告訴我emitter.listeners(event)所有偵聽器。 但是,是否可以事先知道我可以聽的所有事件?

據我所知,沒有公共的API或文檔可以幫助您列出EventEmitter可以發出的所有事件。

但是,如果查看EventEmitter源代碼 ,則可以看到所有事件都存儲在_events屬性中,因此您的代碼可以在對象的鍵上循環並找到所有可能的事件。 這是有關如何列出事件名稱的示例:

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

但是,由於未記錄在案,因此建議您謹慎使用。

編輯:某些模塊提供了可能的事件列表,例如,參見SAX (和相應的source )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM