Listen to All Emitted Events in Node.js

后端 未结 12 1319
孤街浪徒
孤街浪徒 2020-12-24 00:06

In Node.js is there any way to listen to all events emitted by an EventEmitter object?

e.g., can you do something like...

event_emitter.on(\         


        
12条回答
  •  别那么骄傲
    2020-12-24 00:48

    This is based on the answer that Martin provided above. I'm a bit new to node, so I needed to work out his answer for myself. The method at the end, logAllEmitterEvents is the important bit.

    var events = require('events');
    var hungryAnimalEventEmitter = new events.EventEmitter();
    
    function emitHungryAnimalEvents()
    {
        hungryAnimalEventEmitter.emit("HungryCat");
        hungryAnimalEventEmitter.emit("HungryDog");
        hungryAnimalEventEmitter.emit("Fed");
    }
    
    var meow = function meow()
    {
      console.log('meow meow meow');
    }
    
    hungryAnimalEventEmitter.on('HungryCat', meow);
    
    logAllEmitterEvents(hungryAnimalEventEmitter);
    
    emitHungryAnimalEvents();
    
    function logAllEmitterEvents(eventEmitter)
    {
        var emitToLog = eventEmitter.emit;
    
        eventEmitter.emit = function () {
            var event = arguments[0];
            console.log("event emitted: " + event);
            emitToLog.apply(eventEmitter, arguments);
        }
    }
    

提交回复
热议问题