-1

var events = require('events')
var eventEmitter = new events.EventEmitter();

var fn1 = function() {
  console.log("first fn executed on triggering first event  ")
  eventEmitter.emit('fn1')
}
eventEmitter.on("event1", fn1)
eventEmitter.emit('event1')
eventEmitter.on('fn1', function() {
  console.log("This is the fn triggered on 2nd event")
})

output on executing it by node event1.js is " first fn executed on triggering first event "

Barmar
  • 741,623
  • 53
  • 500
  • 612
Ochaoash
  • 121
  • 1
  • 1
  • 10
  • 1
    Probably because the event for `fn1` isn't hooked up until after the event has fired? – deceze Sep 06 '22 at 06:21
  • I thought after eventEmitter.emit, the flow of execution then will goes to check on eventEmitter.on('fn1', function(){} ) and execute it. But we have to specify it before triggering the event, right ? – Ochaoash Sep 06 '22 at 06:34

1 Answers1

3

Because the handler is registered after the event is fired. Try this:

var events = require('events')
var eventEmitter = new events.EventEmitter();

var fn1 = function() {
    console.log("first fn executed on triggering first event  ")
    eventEmitter.emit('fn1')
}
eventEmitter.on("event1", fn1)

eventEmitter.on('fn1', function() {
    console.log("This is the fn triggered on 2nd event")
})
eventEmitter.emit('event1')
Danil Apsadikov
  • 274
  • 1
  • 4
  • 14