我正在使用节点v8.9.4并且我希望获得EventEmitter
的侦听器以便将它们重新连接到另一个EventEmitter(我使用的API只能处理一个EventEmitter
作为参数但是得到了必须处理一个内部发射器和一个外部发射器。)
我需要找出,如果eventName的当前侦听器由.on
或.once
附加。
由于我没有使用最新的节点版本,因此我无法使用documentation中所述的.rawListeners
。
const emitter1 = new EventEmitter();
const emitter2 = new EventEmitter();
emitter1.on('bam', (...args) => {
// exec...
});
emitter1.once('bazinga', (...args) => {
// exec...
});
emitter2.once('bam', (...args) => {
// exec...
});
emitter2.on('bazinga', (...args) => {
// exec...
});
const eventNames = emitter2.eventNames();
for (let eventName of eventNames) {
// in node 9 i would to the following...
const listeners = emitter2.rawListeners(eventName);
if (listeners[0].listener) {
emitter1.once(eventName, listeners[0].listener);
} else {
emitter1.on(eventName, listeners[0]);
}
// in node 8 idk...
}
是否可以使用8.x LTS API获取该信息?
(如果不存在将事件从一个EventEmitter重新附加到另一个EventEmitter的替代方法吗?)