NodeJs EventEmitter使侦听器检查侦听器是否为on类型或一次

时间:2018-03-08 15:45:11

标签: javascript node.js eventemitter

我正在使用节点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的替代方法吗?)

0 个答案:

没有答案