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

23

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


6
当编辑提醒您字符不足时,请不要只是一遍又一遍地发送相同的问题。请听取其建议并更详细地描述您的问题。 - Andrew Li
我不建议移除所有事件监听器。 - Pim van der Heijden
1个回答

35

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

如果你确实需要清除所有已注册的事件,因为其他代码引用了当前的emitter对象,那么可以按照以下方式使用公共API进行操作:

emitter.removeAllListeners();

在Node.js文档这里中描述了这个函数。该函数可以传递一个事件名称来仅移除该事件的所有监听器,或者如果没有传递事件名称,则会移除所有事件的所有监听器。

另外,你还可以使用emitter.eventNames()方法获取所有已注册事件处理程序的事件名称,然后使用emitter.removeAllListeners(eventName)移除任何给定事件名称的所有监听器。因此,你也可以遍历所有事件名称,并移除任何你想要移除监听器的事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接