Zusammenfassung der Wissenspunkte zum Ereignismodul in Node.js

Zusammenfassung der Wissenspunkte zum Ereignismodul in Node.js

Durch das Studium und die Anwendung von Node wissen wir, dass NodeJS Single-Thread-, ereignisgesteuerte, nicht blockierende E/A- und andere Architekturdesigns verwendet, die sich sehr gut für Anwendungen mit hoher Parallelität und E/A-Intensität eignen.

1. Was ist ereignisgesteuert?

Ereignisgesteuert bedeutet vereinfacht ausgedrückt, Änderungen des Ereignisstatus mithilfe wirksamer Methoden zu überwachen und bei Änderungen entsprechende Maßnahmen zu ergreifen.

Um dies zu verstehen, verwenden wir ein Szenario aus dem täglichen Leben: Wenn wir in ein Restaurant gehen, um zu essen und Essen zu bestellen, teilt uns der Kellner nach der Bestellung die Bestellnummer mit (dies kann als Registrierung eines Ereignisses verstanden werden) und wir setzen uns und warten. Zu diesem Zeitpunkt hören unsere Ohren immer auf die Rufnummer des Kellners, und wenn unser Name aufgerufen wird, können wir zur Rezeption gehen, um das Essen abzuholen.

2. Ereignismodell

Die Ereignisarchitektur von NodeJS verwendet das klassische Abonnement-Veröffentlichungsmodell

Der Abonnement- und Veröffentlichungsmodus, auch als Nachrichtenmechanismus bekannt, definiert eine Abhängigkeitsbeziehung, die so verstanden werden kann, dass 1 bis N (mehrere oder einzelne) Beobachter gleichzeitig die entsprechenden Statusänderungen eines Objekts überwachen. Sobald eine Änderung eintritt, werden alle Beobachter benachrichtigt, wodurch die entsprechenden von den Beobachtern registrierten Ereignisse ausgelöst werden. Dieses Entwurfsmuster löst die funktionale Kopplung zwischen dem Hauptobjekt und dem Beobachter.

3. Veranstaltungsmodul

Das Ereignismodul ist ein sehr wichtiges Modul in NodeJS. Die meisten Modulimplementierungen in Node erben die Ereignisklasse, wie z. B. fs, http, net usw. Es stellt ein Objekt events.EventEmitter bereit. Der Kern von EventEmitter ist die Ereignisemission und der Ereignislistener.

Einfache Anwendung:

importiere { EventEmitter } von 'Ereignisse';
 
Klasse MyEmiter erweitert EventEmiter{};
 
const myEmitter = neuer MyEmitter();
 
myEmitter.on('hallo', () => {
  console.log('Hallo, jemand ruft dich an');
});
 
myEmitter.emit('hallo');

4. Kern-API des Ereignismoduls

4.1 eventEmitter.on(Ereignisname, Rückruf)

Registrieren von Listener-Ereignissen

Parameter:

eventName: Ereignisname

callback: Rückruffunktion, die aufgerufen wird, wenn das Ereignis ausgelöst wird

4.2 eventEmitter.once(Ereignisname, Rückruf)

Es ist möglich, einen Listener zu registrieren, der für ein bestimmtes Ereignis höchstens einmal aufgerufen wird. Sobald das Ereignis ausgelöst wird, wird der Listener abgemeldet und dann aufgerufen.

Parameter:

eventName: Ereignisname

callback: Rückruffunktion, die aufgerufen wird, wenn das Ereignis ausgelöst wird

4.3 eventEmitter.emit(Ereignisname[, ...Argumente])

Das angegebene Abhörereignis auslösen

Parameter:

eventName: Ereignisname

args ist ein optionaler Parameter, der der Reihe nach an die Rückruffunktion übergeben wird;

4.4 eventEmitter.removeListener(Ereignisname, Rückruf)

Entfernt den Listener des angegebenen Ereignisses. Hinweis: Der Listener muss registriert sein. Andernfalls ist es ungültig.

Parameter:

eventName: Ereignisname

Rückruf: Rückruffunktion

4.5 EventEmitter.removeAllListeners(Ereignisname)

Alle Listener entfernen. Ein Ereignis kann mehrere Listener haben. Diese Methode kann verwendet werden, wenn alle Listener entfernt werden müssen.

Parameter:

eventName: der Name des Ereignisses, das entfernt werden muss;

Es ist zu beachten, dass alle Überwachungsereignisse entfernt werden, wenn keine Parameter übergeben werden. Dies ist ziemlich heftig und sollte mit Vorsicht verwendet werden.

4.6 EventEmitter.listeners(Ereignisname)

Gibt eine Kopie des Arrays der Listener-Binding-Callbackfunktionen für das Ereignis mit dem Namen eventName zurück.

4.7 EventEmitter.eventNames()

Gibt ein Array zurück, das die Ereignisse auflistet, für die der Trigger Listener registriert hat.

4.8 EventEmitter.setMaxListeners(n)

Standardmäßig gibt ein EventEmitter eine Warnung aus, wenn für ein bestimmtes Ereignis mehr als 10 Listener hinzugefügt werden.

Mit der Methode emitter.setMaxListeners() können Sie den Grenzwert für diese bestimmte EventEmitter-Instanz ändern. Dieser Wert kann auf Unendlich (oder 0) gesetzt werden, um eine unbegrenzte Anzahl von Zuhörern anzuzeigen.

5. Synchrone und asynchrone Probleme

Der EventEmitter ruft alle Listener synchron in der Reihenfolge auf, in der sie registriert wurden. Dadurch wird die korrekte Reihenfolge der Ereignisse sichergestellt und es werden Race Conditions und logische Fehler vermieden.

6. Fehlerbehandlung

Wenn in einer EventEmitter-Instanz ein Fehler auftritt, besteht die typische Aktion darin, ein „Fehler“-Ereignis auszugeben. Diese werden in Node.js als Sonderfälle behandelt.

Wenn der EventEmitter nicht mindestens einen Listener für das „Fehler“-Ereignis registriert hat und das „Fehler“-Ereignis ausgegeben wird, wird der Fehler ausgegeben, der Stapelüberwachungscode gedruckt und der Node.js-Prozess beendet.

Als bewährte Methode sollten Sie immer einen Listener für das Ereignis „Fehler“ hinzufügen.

importiere { EventEmitter } von 'Ereignisse';
 
Klasse MyEmiter erweitert EventEmiter{};
 
const myEmitter = neuer MyEmitter();
 
myEmitter.on('hallo', () => {
  console.log('Hallo, jemand ruft dich an');
});
 
myEmitter.on('Fehler', (e) => {
  console.log(e)
})
 
myEmitter.emit('hallo');
myEmitter.emit('Fehler', neuer Fehler('ein Fehler ist aufgetreten'))

Dies ist das Ende dieses Artikels über die Wissenspunkte des Ereignismoduls in Node.js. Weitere Inhalte zum Ereignismodul in Node.js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des node.JS-Ereignismechanismus und der Verwendung des Ereignismoduls
  • Beispielanalyse der Verwendung von Ereignisauslöser-Ereignissen in node.js
  • Node.js Lernereignismodul Ereignisse Anwendungsbeispiel
  • Einführung in die Verwendung von Node.js events.EventEmitter

<<:  Grundlegendes Handbuch für Webdesign 216 Websichere Farben

>>:  Probleme mit dem benannten Mount und dem anonymen Mount des Docker-Container-Datenvolumens

Artikel empfehlen

Umfassendes Verständnis von HTML-Formularelementen

Wie unten dargestellt: XML/HTML-CodeInhalt in die...

Was ist die Datei mysql-bin.000001 in MySQL? Kann sie gelöscht werden?

Nachdem ich MySQL über Ports installiert hatte, s...

Kompilieren Sie CPP-Dateien mit G++ in Ubuntu

Als ich die CPP-Datei zum ersten Mal mit G++ komp...

Detaillierte Erklärung des Unterschieds zwischen Uniapp und Vue

Inhaltsverzeichnis 1. Einfaches Seitenbeispiel 2....

4 flexible SCSS-Kompilierungsausgabestile

Vielen Leuten wird das Kompilieren erklärt, sobal...

SQL IDENTITY_INSERT-Fallstudie

Wenn eine Spalte in einer Datentabelle einmal als...

So blockieren Sie IP und IP-Bereich in Nginx

Vorne geschrieben Nginx ist nicht nur ein Reverse...

Ändern Sie das JVM-Kodierungsproblem, wenn Tomcat ausgeführt wird

Frage: Vor kurzem traten bei der Bereitstellung d...

Ein Leistungsfehler bei MySQL-Partitionstabellen

Inhaltsverzeichnis 2. Stapelanalyse mit pt-pmap 3...

CSS - overflow:hidden in Projektbeispielen

Hier sind einige Beispiele, wie ich diese Eigensch...

Einführung in den Aufbau von NFS-Diensten unter Centos7

Inhaltsverzeichnis 1. Server 2. Kunde 3. Testdien...

Einführung in Who-Befehlsbeispiele in Linux

Über wen Zeigt die am System angemeldeten Benutze...

Bootstrap+Jquery zum Erreichen eines Kalendereffekts

In diesem Artikel wird der spezifische Code von B...