Javascript 给定一个EventEmitter数组,只侦听第一个事件

Javascript 给定一个EventEmitter数组,只侦听第一个事件,javascript,node.js,Javascript,Node.js,在我的代码中,我有一个EventEmitter对象数组。我知道在某个时刻,其中一个会触发一个名为launched的事件 我只想侦听此阵列中发射器触发的第一个事件,并忽略任何后续事件 我目前的代码是: emitterArray.forEach(发射器=>{ 一旦('launted',()=>{console.log('Event fired!'}); }); 但是,这将等待阵列中的每个发射器触发事件一次 我希望程序在一个发射器恰好触发此事件一次后结束 注意:使用进程终止进程。在事件侦听器中退出不

在我的代码中,我有一个
EventEmitter
对象数组。我知道在某个时刻,其中一个会触发一个名为
launched
的事件

我只想侦听此阵列中发射器触发的第一个事件,并忽略任何后续事件

我目前的代码是:

emitterArray.forEach(发射器=>{
一旦('launted',()=>{console.log('Event fired!'});
});
但是,这将等待阵列中的每个发射器触发事件一次

我希望程序在一个发射器恰好触发此事件一次后结束


注意:使用
进程终止进程。在事件侦听器中退出
不是一个选项。

在您的模块中,您可以将全局(最高模块级别)标志初始化为false,并使每个事件处理程序检查该标志

if (flag) {
  return
}

flag = true
console.log('Event fired')
由于node.js是单线程的,因此不应该在那里获得任何竞争条件,即使所有事件处理程序都将被触发,您也可以控制它们中的哪些将实际运行其代码


希望这是有意义的。

虽然这确实有效,但node.js进程将在执行所有其他代码后挂起,等待事件在每个发射器上触发。有没有办法绕过这个问题?您可以将回调另存为常量变量或将其注册为函数,一旦调用它,就可以从其他事件发射器注销它