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);