NodeJS EventEmitter中事件的发送者

在一个支持多个subprocess的NodeJS应用程序中,我需要知道subprocess何时退出,问题是由EventEmitter调用的callback函数没有事件的发送者。

我做了很多的.NET开发,他们的事件总是有sender参数和arguments参数。

我怎么知道哪个subprocess发送了事件?

我可以做类似的事情

const childProcess = fork(...) childProcess.on('exit', function(code, signal) { myCallback(childProcess, code, signal); }

但后来我不能从这个特定的事件处理程序注销。

答案是this将被设置为引用发件人。

来源https://nodejs.org/api/events.html

eventEmitter.emit()方法允许将任意一组parameter passing给侦听器函数。 请记住,当EventEmitter调用普通的侦听器函数时,标准的this关键字被有意设置为引用侦听器所连接的EventEmitter。

cluster.worker.pid通常是一个获取进程ID的好方法(因为fork导致这样的事件)。

的console.log(cluster.worker.pid);