Asynchrone JS ES6-Lösung

Asynchrone JS ES6-Lösung

Erste Verwendung der Callback-Funktion

​ Da es zu Beginn keine klare offizielle Spezifikation für js gab, gab es keine klare Spezifikation für die Parameter in den Rückruffunktionen, die in den in verschiedenen Bibliotheken von Drittanbietern gekapselten asynchronen Funktionen übergeben wurden, und die Bedeutung jedes Parameters war nicht klar, was die Verwendung unbequem machte.

Aber es gibt klare Vorgaben im Node

Rückrufmodus im Knoten:

1. Alle Rückruffunktionen müssen zwei Parameter haben, der erste Parameter gibt den Fehler an und der zweite Parameter gibt das Ergebnis an

2. Alle Rückruffunktionen müssen der letzte Parameter der Funktion sein

3. Alle Rückruffunktionen können nicht als Attribute erscheinen

es6 asynchrones Verarbeitungsmodell

Nach dem Erscheinen von Es6 wurden offiziell Spezifikationen für die asynchrone Verarbeitung und ein für alle asynchronen Szenarien geeignetes Verarbeitungsmodell vorgeschlagen. Das Modell hat:

  • Zwei Phasen: unruhig und gelassen.
  • Drei Zustände: Ausstehend, Gelöst, Abgelehnt
  • Wechseln Sie immer von der ungelösten Phase zur gelösten Phase. Der Status der gelösten Phase ändert sich nicht.

Nachdem sich die Aufgabe im Status „Aufgelöst“ befindet, ist möglicherweise eine nachfolgende Verarbeitung erforderlich.

  • Die nachfolgende Verarbeitung von aufgelösten thenable-Objekten nennen wir
  • Die Weiterverarbeitung von abgelehnten Catchables nennen wir

Auf dieses asynchrone Modell zugeschnittene API: Promise

So verwenden Sie Versprechen

Kopie

const task = neues Versprechen((lösen, ablehnen) => {     
    // Code für ausstehende Aufgabenphase // Sofort ausführen console.log("100-Meter-Langstreckenlauf starten");  
    setzeTimeout(() => {  
       wenn (Math.random() > 0,5) {  
           // Erfolg: Fertig // Bis zum Erfolg pushen resolve("finished");  
       } anders {  
           // Fehler: Beinbruch // Bis zum Fehler pushen reject("Beinbruch");  
       }  
    }, 1000)
});
task.then((Ergebnis) => {
  console.log(Ergebnis);
}).catch((Fehler) => {
  konsole.log(Fehler);
})

Nach 1 Sekunde wird die Aufgabe zur Lösung weitergeleitet und die nachfolgende Verarbeitung erfolgt in „then“ oder „catch“.

Beachten

Ausstehender Status => abgelehnter Status:

Kopie

1. Anruf ablehnen

2. Fehler bei der Codeausführung

3. Fehler manuell auslösen

Nachfolgende Verarbeitungsfunktionen müssen asynchron erfolgen und werden in die Mikrowarteschlange gestellt.

Nachdem der JS-Ausführungsstapel gelöscht wurde, werden zuerst die Aufgaben in der Mikrowarteschlange ausgeführt. Nachdem die Aufgaben in der Mikrowarteschlange gelöscht wurden, werden die Aufgaben in der Makrowarteschlange ausgeführt.

  • Zu den Warteschlangen für Makroaufgaben gehören: setTimeout, setInterval, setImmediately, I/O, UI-Render
  • Zu den Microtask-Warteschlangen gehören: promise, process.nexttick, Object.observe (nicht mehr verwendet), Mutation.observe

Async await ist die syntaktische Vereinfachung von Promise, die in es7 hinzugefügt wurde. Sie können auch mehr darüber erfahren. Dieser Artikel gibt nur einen Überblick über Promise. Es gibt noch viele weitere Details, die man beherrschen muss.

Oben sind die Details der asynchronen JS ES6-Lösung aufgeführt. Weitere Informationen zur asynchronen ES6-Lösung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • JS beherrscht schnell die Verwendung von ES6-Klassen
  • Detaillierte Erläuterung der Destrukturierungszuweisung von JS ES6-Variablen
  • Mehrere magische Verwendungen des JS ES6 Spread-Operators
  • Lassen Sie uns über Destrukturierung in JS ES6 sprechen
  • Implementierung der Javascript-Destrukturierung in ES6
  • Verwendung und Unterschied zwischen let und const in der ES6-Spezifikation in JavaScript
  • 24 ES6-Methoden zur Lösung praktischer JS-Entwicklungsprobleme (Zusammenfassung)
  • Detaillierte Erläuterung des Implementierungsprinzips der JavaScript ES6-Klasse
  • Spezifische Verwendung von ES6-Proxy in JavaScript
  • Detaillierte Erläuterung der JS ES6-Codierungsstandards

<<:  Detaillierte Erklärung von 7 SSH-Befehlsverwendungen in Linux, die Sie nicht kennen

>>:  InnoDB-Typ MySql stellt Tabellenstruktur und Daten wieder her

Artikel empfehlen

Detaillierte Erklärung des Integer-Datentyps tinyint in MySQL

Inhaltsverzeichnis 1.1Tinyint-Typbeschreibung 1.2...

JavaScript zur Implementierung der Webversion des Gobang-Spiels

In diesem Artikel wird der spezifische Code für J...

Uniapp implementiert Beispielcode für die Anmeldung mit DingTalk-Scancode

Da Uniapp nicht über eine autorisierte DingTalk-A...

Mysql-Operation zum Abrufen von Tabellenkommentarfeldern

Ich werde nicht viel Unsinn erzählen, schauen wir...

Docker unter Linux installieren (sehr einfache Installationsmethode)

Ich hatte in letzter Zeit ziemlich viel Zeit. Ich...

Eine kurze Diskussion zum Problem von Daten mit Nullwerten in der MySQL-Datenbank

Standardmäßig akzeptiert MySQL das Einfügen von 0...

So setzen Sie das Root-Passwort in Linux mysql-5.6 zurück

1. Überprüfen Sie, ob der MySQL-Dienst gestartet ...

XHTML-Tutorial für die ersten Schritte: XHTML-Webseiten-Bildanwendung

<br />Das sinnvolle Hinzufügen von Bildern k...

Vue erzielt den Top-Effekt durch V-Show

html <div Klasse="nach oben" v-show=...

Grundlegendes Tutorial zur Steuerung des mobilen Roboters Turtlebot3 mit ROS

Chinesisch-Tutorial https://www.ncnynl.com/catego...

Detaillierte Erklärung zur Verwendung von Vue-Mixin

Inhaltsverzeichnis Verwendung von Vue-Mixin Daten...