如何删除NodeJS中的所有事件侦听器?
答案 0 :(得分:8)
也许最简单的方法就是用一个没有注册侦听器的新对象替换eventEmitter对象。
如果您确实需要清除所有已注册的事件,因为其他代码具有对当前发射器对象的引用,那么您可以使用这样的公共API来执行此操作:
emitter.removeAllListeners();
node.js doc here中对此进行了描述。该函数可以传递事件名称以删除仅针对该事件的所有侦听器,或者,如果未传递任何事件名称,则会删除所有事件的所有侦听器。
仅供参考,您还可以使用emitter.eventNames()
方法获取具有任何已注册事件处理程序的所有事件名称,然后您可以使用emitter.removeAllListeners(eventName)
删除任何给定事件名称的所有侦听器。因此,您还可以迭代所有事件名称并删除所有任何您想要的侦听器。