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

Nodejs-Plugin und Nutzungsübersicht

Die Betriebsumgebung dieses Tutorials: Windows 7-...

CSS-Position feste linke und rechte Doppelpositionierungs-Implementierungscode

CSS-Position Das Positionsattribut gibt den Posit...

HTML-Tipps, um Ihren Code semantisch zu gestalten

HTML-Semantik scheint ein alltägliches Problem zu...

Zusammenfassung der Möglichkeiten zur Implementierung von Single Sign-On in Vue

Das Projekt wurde vor Kurzem ausgesetzt und die U...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

Vue.js implementiert eine einfache Timerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Definieren Sie Ihre eigene Ajax-Funktion mit JavaScript

Da die von nativen JS initiierten Netzwerkanforde...

Eine detaillierte Diskussion über MySQL-Deadlocks und -Logs

Vor kurzem sind mehrere Datenanomalien in MySQL o...

So konfigurieren Sie mehrere Projekte mit demselben Domänennamen in Nginx

Es gibt zwei Möglichkeiten, mit Nginx mehrere Pro...