我有类似的代码:
emitter.on('request', request => {
if(condition) doSomething(request);
});
function doSomething(request){
emitter.on('message', message => {
if(anotherCondition){
//
//Some code to send something
//
}
})
}
基本上,如果不清楚,我试图让听众等待请求然后发回任何并等待接收者的响应我发送的。但是,当发生这种情况时,on('message'
侦听器仍然处于活动状态,而发射器获取它的下一个请求会发送 两次。下一次,它会发送 三次次。我该如何安全地阻止它?
答案 0 :(得分:1)
每次调用doSomething()时,您都可以从代码中观察到您正在创建一个新的侦听器。因此,每次调用doSomething()
时,收到消息的次数都会增加你应该在doSomething()和之外定义emitter.on('message'.... block 而只是发出事件emit('message'...在doSomething()内发出事件或使用removeListener('message ....在某些情况下禁用事件发射器。
如果您一直保持1个发射器和1个侦听器,那么您应该没问题。
这应该是你期望的。