Der Node.js Event Emitter
Wenn Sie mit JavaScript im Browser gearbeitet haben, wissen Sie, wie viel der Benutzerinteraktion über Ereignisse abgewickelt wird: Mausklicks, Tastendrucke, Reaktionen auf Mausbewegungen usw.
Auf der Backend-Seite bietet uns Node.js die Möglichkeit, ein ähnliches System mit dem events Modul aufzubauen.
Dieses Modul bietet insbesondere die EventEmitter-Klasse, die wir zur Behandlung unserer Ereignisse verwenden werden.
Sie initialisieren diese mit
import EventEmitter from 'node:events';
const eventEmitter = new EventEmitter();Dieses Objekt stellt unter anderem die Methoden on und emit bereit.
emitwird verwendet, um ein Ereignis auszulösenonwird verwendet, um eine Callback-Funktion hinzuzufügen, die ausgeführt wird, wenn das Ereignis ausgelöst wird
Erstellen wir beispielsweise ein start-Ereignis und reagieren wir darauf, indem wir es einfach in der Konsole protokollieren:
eventEmitter.on('start', () => {
console.log('gestartet');
});Wenn wir Folgendes ausführen:
eventEmitter.emit('start');wird die Ereignisbehandlungsfunktion ausgelöst und wir erhalten den Konsolenlog.
Sie können Argumente an den Ereignishandler übergeben, indem Sie sie als zusätzliche Argumente an emit() übergeben:
eventEmitter.on('start', number => {
console.log(`gestartet ${number}`);
});
eventEmitter.emit('start', 23);Mehrere Argumente:
eventEmitter.on('start', (start, end) => {
console.log(`gestartet von ${start} bis ${end}`);
});
eventEmitter.emit('start', 1, 100);Das EventEmitter-Objekt stellt auch verschiedene andere Methoden zur Interaktion mit Ereignissen bereit, wie z. B.:
once(): Einen einmaligen Listener hinzufügenremoveListener()/off(): Einen Event Listener von einem Event entfernenremoveAllListeners(): Alle Listener für ein Ereignis entfernen
Weitere Informationen zu diesen Methoden finden Sie in der Dokumentation des Ereignismoduls.