Skip to content

Der Node.js Event-Emitter

Wenn Sie mit JavaScript im Browser gearbeitet haben, wissen Sie, wie viel der Interaktion des Benutzers durch Ereignisse abgewickelt wird: Mausklicks, Tastendrucke, Reaktionen auf Mausbewegungen und so weiter.

Auf der Backend-Seite bietet uns Node.js die Möglichkeit, ein ähnliches System mit dem events Modul zu erstellen.

Dieses Modul bietet insbesondere die EventEmitter-Klasse an, die wir zur Behandlung unserer Ereignisse verwenden werden.

Sie initialisieren diese mit

js
import EventEmitter from 'node:events'
const eventEmitter = new EventEmitter()

Dieses Objekt stellt unter anderem die Methoden on und emit zur Verfügung.

  • emit wird verwendet, um ein Ereignis auszulösen
  • on wird verwendet, um eine Callback-Funktion hinzuzufügen, die ausgeführt wird, wenn das Ereignis ausgelöst wird

Erstellen wir zum Beispiel ein start-Ereignis und reagieren wir probeweise darauf, indem wir es einfach in die Konsole schreiben:

js
eventEmitter.on('start', () => {
  console.log('gestartet')
})

Wenn wir

js
eventEmitter.emit('start')

ausführen, wird die Ereignis-Handler-Funktion ausgelöst, und wir erhalten den Konsolen-Log.

Sie können Argumente an den Ereignishandler übergeben, indem Sie sie als zusätzliche Argumente an emit() übergeben:

js
eventEmitter.on('start', number => {
  console.log(`gestartet ${number}`)
})
eventEmitter.emit('start', 23)

Mehrere Argumente:

js
eventEmitter.on('start', (start, end) => {
  console.log(`gestartet von ${start} bis ${end}`)
})
eventEmitter.emit('start', 1, 100)

Das EventEmitter-Objekt stellt auch mehrere andere Methoden zur Interaktion mit Ereignissen zur Verfügung, wie z. B.

  • once(): einen einmaligen Listener hinzufügen
  • removeListener() / off(): einen Ereignis-Listener von einem Ereignis entfernen
  • removeAllListeners(): alle Listener für ein Ereignis entfernen

Weitere Informationen zu diesen Methoden finden Sie in der Dokumentation des Ereignismoduls.