Heim Web-Frontend js-Tutorial NodeJS-Tutorial zum asynchronen I/O_node.js

NodeJS-Tutorial zum asynchronen I/O_node.js

May 16, 2016 pm 04:30 PM
nodejs 异步io

Vorwort

In meinem Bild erschien asynchron zuerst mit Ajax. Ich arbeitete damals noch an .net, und dann kam .net tatsächlich mit einem asynchronen Steuerelement heraus ...

Obwohl ich schließlich herausgefunden habe, dass es nicht asynchron ist ... Dann wird das Frontend häufig asynchron verwendet. Wenn es sich nicht um ein asynchrones Programm handelt, wäre es Ihnen peinlich zu sagen, dass die von Ihnen geschriebenen NodeJs erstellt wurden durch JavaScript.

Die Funktion des asynchronen Programmiermodells hat auch viele Vorteile, aber es ist ein Albtraum für das Design. Asynchrones wird das Timing stören, sodass es die Schwierigkeit des Designs erhöht

Aber die Asynchronität hat die Leistungsverbesserung und das Benutzererlebnis revolutioniert, daher sind die asynchronen Funktionen von NodeJS ziemlich offensichtlich. Heute werden wir es kurz lernen

Asynchrone E/A

Tatsächlich gibt es auf Betriebssystemebene nur zwei E/A-Methoden: blockierend und nicht blockierend

Im Blockierungsmodell muss die Anwendung warten, bis die E/A abgeschlossen ist, bevor sie das Ergebnis zurückgibt. Ihre Besonderheit besteht darin, dass sie das Backend aufruft und darauf wartet, dass das System alle Vorgänge abschließt Warten Sie, während nicht blockierende Anrufe sofort zurückgegeben werden

Ich habe zum ersten Mal ein Buch gelesen, aber ich habe das Gefühl, dass die Beschreibung hier nicht klar ist und das asynchrone Modell tatsächlich sehr groß ist, nur eine Verbesserung der Wahrnehmungsebene

Ich habe jetzt zwei Einzelseiten-Anwendungsansichten, eine Suchseite und eine Listenseite. Wenn ich verschiedene Kanäle durchsuchen muss, muss der Drittanbieter Daten von bestimmten Kanälen abrufen

Natürlich ist es zu diesem Zeitpunkt sehr langsam, wenn ich direkt von A nach B wechsle und dann eine Ladebox oder etwas anderes erstelle, um Daten in B zu laden. Aber das Problem ist jetzt, dass ich eine Animation benötige Effekte, um von A nach B zu wechseln

Dies setzt voraus, dass das Bview-Rendering beim Umschalten beendet ist. Zumindest werden dabei keine Daten abgerufen und das Rendern gestartet. Daher ist die asynchrone Verwendung zu diesem Zeitpunkt möglicherweise nicht so einfach. Selbst wenn Daten asynchron angefordert werden, ist dies ebenfalls erforderlich Datenerfassung zum Laden der Seite

Dies blockiert immer noch das Laden, und aus geschäftlicher Sicht gibt es keine Möglichkeit, dies zu tun

Keine Technologie ist perfekt. Das Nichtblockieren führt nicht nur zu einer Unterbrechung der Logik, sondern erfordert möglicherweise auch eine Abfrage, um zu bestätigen, ob der Ladevorgang abgeschlossen ist (ich habe die Abfrage einmal verwendet, um festzustellen, ob ein DOM generiert wurde).

NodeJs verwendet einen Ereignisschleifenmechanismus. Bei jeder Ausführung des Schleifenkörpers wird bei jedem Tick überprüft, ob ein Ereignis erforderlich ist verarbeitet werden

Wenn ja, nehmen Sie das entsprechende Ereignis heraus, führen Sie es aus und geben Sie dann die nächste Logik ein. Wenn nicht, verlassen Sie die Schleife

In jedem Tick-Prozess gibt es einen oder mehrere Beobachter in jeder Ereignisschleife. Der Prozess zur Bestimmung, ob ein Ereignis verarbeitet werden muss, besteht darin, diese Beobachter zu fragen, ob das Ereignis verarbeitet werden muss

Nehmen Sie unser HTML-Event-Modell als Beispiel

Bei HTML ist jedes seiner DOMs ein Beobachter. Nachdem wir einen addEventListener für ein DOM bereitgestellt haben, registrieren wir eine Rückruffunktion dafür Wir registrieren, werden in ein „Container“-Objekt eingefügt. Zu diesem Zeitpunkt handelt es sich lediglich um eine Registrierung. Diese Funktionen werden ausgelöst, nachdem die Bedingungen erfüllt sind (wenn sich die Seite ändert), und die relevanten Ereignisse werden aus dem Container entnommen ausgeführt

Wir klicken nun einmal auf einen Punkt auf der Seite, nehmen dann die Klickereignissammlung aus dem Container, suchen das entsprechende DOM und lösen dann die Rückruffunktionen dieser DOM aus

Ereignisse können durch Benutzerklicks oder Datenänderungen entstehen. In Node entstehen Ereignisse hauptsächlich durch Netzwerkanforderungen und Datei-E/A. Diese Ereignisse verfügen über entsprechende Beobachter, z. B. Dateibeobachter und Netzwerkbeobachter

Dies ist auch ein typisches Produktions-/Verbrauchsmodell, asynchrone E/A, Netzwerkanforderungen sorgen für die Ereignisproduktion, Ereignisse werden an verschiedene Beobachter übermittelt, Beobachter registrieren Ereignisse und die Ereignisschleife ist dafür verantwortlich, Ereignisse herauszunehmen und dann auszuführen

PS: Am Beispiel eines Klicks registriert jeder DOM-Beobachter zuerst das Ereignis, der Seitenprozess überwacht die Seite kontinuierlich, der Benutzer klickt auf die Seite, um Ereignisse zu generieren, und dann wird das registrierte Klickereignis aus dem Container entnommen und ausgeführt ,

Allgemeine Funktionslogik wird von uns gesteuert:

var forEach = Funktion (Liste, Rückruf) {
for (var i = 0, len = list.length; i < len; i ) {
          callback(list[i], i, list);
}
}


Im Falle eines asynchronen Betriebs wird die Rückruffunktion nicht vom Entwickler gesteuert. Bei jedem Aufruf von js wird ein Übergangsproduktanforderungsobjekt generiert

fs.open = Funktion (Pfad, Flags, Modus, Rückruf) {
bingding.open(pathModule._makeLong(path), stringToFlags(flags), mode, callback);
};

fs.open öffnet eine Datei basierend auf dem Pfad und den Parametern, um relevante Daten abzurufen. Es ruft intern die c-bezogene Schnittstelle auf und generiert dabei ein Zwischenobjekt, in dem alle unsere Zustände angezeigt werden...

PS: Ich fühle mich schlecht, nachdem ich es so lange gesehen habe

Fazit

Das Obige dreht sich alles um asynchrone E/A in nodejs. Wenn es Auslassungen oder Fehler gibt, weisen Sie bitte darauf hin.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen NodeJS und Tomcat Der Unterschied zwischen NodeJS und Tomcat Apr 21, 2024 am 04:16 AM

Die Hauptunterschiede zwischen Node.js und Tomcat sind: Laufzeit: Node.js basiert auf der JavaScript-Laufzeit, während Tomcat ein Java-Servlet-Container ist. E/A-Modell: Node.js verwendet ein asynchrones, nicht blockierendes Modell, während Tomcat synchrones Blockieren verwendet. Parallelitätsbehandlung: Node.js verarbeitet die Parallelität über eine Ereignisschleife, während Tomcat einen Thread-Pool verwendet. Anwendungsszenarien: Node.js eignet sich für Echtzeit-, datenintensive und Anwendungen mit hoher Parallelität, und Tomcat eignet sich für herkömmliche Java-Webanwendungen.

Der Unterschied zwischen NodeJS und VueJS Der Unterschied zwischen NodeJS und VueJS Apr 21, 2024 am 04:17 AM

Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

Ist NodeJS ein Backend-Framework? Ist NodeJS ein Backend-Framework? Apr 21, 2024 am 05:09 AM

Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Apr 21, 2024 am 05:18 AM

Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

So verbinden Sie NodeJS mit der MySQL-Datenbank So verbinden Sie NodeJS mit der MySQL-Datenbank Apr 21, 2024 am 06:13 AM

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

Ist NodeJS eine Back-End-Entwicklungssprache? Ist NodeJS eine Back-End-Entwicklungssprache? Apr 21, 2024 am 05:09 AM

Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

Was sind die globalen Variablen in NodeJS? Was sind die globalen Variablen in NodeJS? Apr 21, 2024 am 04:54 AM

Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

Gibt es einen großen Unterschied zwischen NodeJS und Java? Gibt es einen großen Unterschied zwischen NodeJS und Java? Apr 21, 2024 am 06:12 AM

Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.

See all articles