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