在条件后停止事件侦听器



我有一个类似于这样的代码:

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 个侦听器,您应该没问题。

这应该主要是您所期望的。

最新更新