如何在NodeJS EventEmitter中删除所有事件侦听器?

时间:2017-08-07 05:55:17

标签: node.js events

如何删除NodeJS中的所有事件侦听器?

1 个答案:

答案 0 :(得分:8)

也许最简单的方法就是用一个没有注册侦听器的新对象替换eventEmitter对象。

如果您确实需要清除所有已注册的事件,因为其他代码具有对当前发射器对象的引用,那么您可以使用这样的公共API来执行此操作:

emitter.removeAllListeners();

node.js doc here中对此进行了描述。该函数可以传递事件名称以删除仅针对该事件的所有侦听器,或者,如果未传递任何事件名称,则会删除所有事件的所有侦听器。

仅供参考,您还可以使用emitter.eventNames()方法获取具有任何已注册事件处理程序的所有事件名称,然后您可以使用emitter.removeAllListeners(eventName)删除任何给定事件名称的所有侦听器。因此,您还可以迭代所有事件名称并删除所有任何您想要的侦听器。