如何删除同一对象上同时侦听同一事件的不同侦听器?

cat*_*aki 2 listener node.js

某个对象上的事件侦听器是否充当该侦听器的"识别对"?或者只是对象上的事件

在这里阅读node.js文档:http: //nodejs.org/api/events.html#events_emitter_removelistener_event_listener

例如,如果您有两个回调函数,listener_1并且listener_2:

var stdin = process.stdin;

stdin.on('data',listener_1);
stdin.on('data',listener_2);
Run Code Online (Sandbox Code Playgroud)

然后你删除了监听器,用:

stdin.removeListener('data',listener_1);
Run Code Online (Sandbox Code Playgroud)

那么,listener_2还在听吗?

谢谢.

PS.我尝试使用util.inspectlisteners方法测试自己,但仍然没有自信我明白这是如何工作的!

Uto*_*pik 7

如果要删除所有侦听器,可以使用

stdin.removeAllListeners('data')
Run Code Online (Sandbox Code Playgroud)

否则,打电话后

stdin.removeListener('data',listener_1);
Run Code Online (Sandbox Code Playgroud)

listener_2 继续收听.

  • 你不能.如果您打算将其删除,则必须为您的功能命名.但是,这不是重要的名称,而是参考.`var todelete = listener_1; stdin.removeListener('data',todelete);`工作; 因为todelete是对Listener的引用. (2认同)