Einführung und Verwendung des Javascript-Generators

Einführung und Verwendung des Javascript-Generators

Was ist ein Generator?

Ein Generator ist ein Code, der innerhalb einer Funktion ausgeführt wird.

  • Nach der Rückgabe des Wertes wird es angehalten und -
  • Der Anrufer kann die Unterbrechung abbrechen und einen anderen Wert zurückgeben lassen.

Diese „Rückgabe“ ist keine herkömmliche Rückgabe einer Funktion. Daher erhält es einen besonderen Namen: Ertrag.

Die Generatorsyntax variiert von Sprache zu Sprache. Die Generatorsyntax von Javascript ähnelt der von PHP, unterscheidet sich jedoch so sehr, dass die Erwartung, dass sie gleich funktionieren, zu großer Verwirrung führt.

Wenn Sie in JavaScript einen Generator verwenden möchten, müssen Sie:

  • Spezielle Generatorfunktionen definieren
  • Rufen Sie diese Funktion auf, um ein Generatorobjekt zu erstellen
  • Verwenden Sie das Generatorobjekt in einer Schleife oder rufen Sie dessen nächste Methode direkt auf.

Wir beginnen mit diesem einfachen Programm und befolgen die folgenden Schritte:

// Datei: beispielprogramm.js
Funktion *Generatorerstellen() {
 für(lass i=0;i<20;i++) {
 Ertrag ich
 }
}

const generator = erstelleGenerator()

Konsole.log(Generator.Weiter())
Konsole.log(Generator.Weiter())

Wenn Sie diesen Code ausführen, erhalten Sie die folgende Ausgabe:

$ node beispielprogramm.js

{ Wert: 0, fertig: false }
{ Wert: 1, fertig: false }

Lassen Sie mich erklären, wie das Programm funktioniert.

Generatorfunktionen

Zunächst gibt es die Definition der Generatorfunktion im Code:

Funktion* Generator erstellen() {
 für(lass i=0;i<20;i++) {
 Ertrag ich
 }
}

Das * nach der Funktion teilt JavaScript mit, dass dies eine Generatorfunktion ist. Im Folgenden finden Sie alle gültigen Definitionen von Generatorfunktionen.

Funktion*Generator erstellen
Funktion* Generator erstellen
Funktion *Generator erstellen

Das * ist nicht Teil des Funktionsnamens. Stattdessen definiert die Funktionsnotation einen Generator.

Aufruf der Generatorfunktion

Nachdem wir die Generatorfunktion definiert haben, nennen wir sie eine Funktion mit einem anderen Namen.

// HINWEIS: Beim Aufruf ist kein * vorhanden. * ist nicht Teil des Funktionsnamens // `function *` ist das Symbol, das zur Definition einer Generatorfunktion verwendet wird const generator = createGenerator()

Aber denken Sie daran: Die Funktion createGenerator hat keinen Rückgabewert. Dies liegt daran, dass Generatorfunktionen keinen traditionellen Rückgabewert haben. Wenn Sie dagegen eine Generatorfunktion direkt aufrufen, gibt diese immer ein instanziiertes Generatorobjekt zurück.

Dieses Generatorobjekt hat eine nächste Methode. Durch den Aufruf von „next“ wird der Code innerhalb der Generatorfunktion ausgeführt.

Funktion* Generator erstellen() {
 für(lass i=0;i<20;i++) {
  Ertrag ich
 }
}

Dies ist wichtig genug, um es noch einmal aufzurufen. Durch den direkten Aufruf einer Generatorfunktion wird kein Code in der Generatorfunktion ausgeführt. Stattdessen wird ein Generatorobjekt erstellt. Als nächstes ruft es das Generatorobjekt auf, das wiederum den Code in der Generatorfunktion aufruft.

Wenn „next“ zum ersten Mal für ein Generatorobjekt aufgerufen wird, wird der darin enthaltene Code ausgeführt, bis eine Yield-Anweisung gefunden wird. Sobald ein Yield erreicht ist, unterbricht JavaScript die Ausführung dieses Codes und gibt als Nächstes ein Objekt zurück (gibt Ihnen oder liefert ein Yield), das den Wert in der Yield-Zeile enthält.

Wenn Sie „Next“ ein zweites (oder drittes, viertes oder noch öfter) Mal anrufen, wird die Unterbrechung des Codes fortgesetzt und die Ausführung wird dort fortgesetzt, wo sie beim letzten Anruf unterbrochen wurde. Die Variable (in diesem Fall i) behält ihren Wert. Wenn der Code eine andere Yield-Anweisung erreicht, hält die Funktion erneut an und gibt ein Objekt zurück, das den zurückgegebenen Wert enthält.

Deshalb rufen wir „Next“ zweimal an.

Konsole.log(Generator.Weiter())
Konsole.log(Generator.Weiter())

Sie erhalten die folgende Ausgabe:

{ Wert: 0, fertig: false }
{ Wert: 1, fertig: false }

Sobald die Ausführung des Codes in der Generatorfunktion abgeschlossen ist, geben alle zukünftigen Aufrufe von „next“ ein Objekt mit dem Wert „undefined“ und „done“ auf „true“ gesetzt zurück.

{ Wert: undefiniert, fertig: true }

Generatoren und Schleifen

Obwohl es möglich ist, „next“ manuell für ein Generatorobjekt aufzurufen, möchten wir es hauptsächlich in einer Schleife verwenden. Schauen Sie sich dieses leicht modifizierte Programm an.

// Datei: beispielprogramm.js
@Highlightsyntax@jscript
Funktion *Generatorerstellen() {
 für(lass i=0;i<5;i++) {
 Ertrag ich
 }
}

const generator = erstelleGenerator()
für (konstanter Wert des Generators) {
 console.log(Wert)
}

Wenn ein Generatorobjekt in einer for...of-Schleife verwendet wird, wird bei jedem Schleifendurchlauf „next“ für das Generatorobjekt aufgerufen und die Variable (Wert oben) mit dem erzeugten Wert gefüllt. Beim Ausführen des Programms wird Folgendes ausgegeben:

$ node beispielprogramm.js
0
1
2
3
4

Im nächsten Artikel werden wir uns die for ... of-Schleife genauer ansehen und untersuchen, wie JavaScript über eine integrierte Möglichkeit verfügt, eine Schleife über jedes beliebige Objekt in JavaScript auszuführen.

Zusammenfassen

Dies ist das Ende dieses Artikels über Javascript-Generator. Weitere relevante Inhalte zum Javascript-Generator 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 der Generatoren in JavaScript ES6
  • Warum JS sagt, dass async/await die Syntaxvereinfachung des Generators ist
  • Ausführliche Erklärung der Generatorfunktion in js
  • js verwendet Generatorfunktion, um Ajax-Aufgaben synchron auszuführen
  • So verwenden Sie Generator in JavaScript
  • Tiefgreifendes Verständnis der Datentypen von JS-Generatoren
  • Detaillierte Erklärung des ES6-Generatordatentyps in JavaScript
  • Eine kurze Diskussion über die Verwendung von Generator und Iterator in JavaScript
  • Eine kurze Analyse des JavaScript-Pfeilfunktionsgenerators Date JSON
  • Verwenden von Javascript-Generatoren in Node.js

<<:  Freundliche Alternativen zum Find Tool in Linux

>>:  Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana

Artikel empfehlen

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

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

Beispielcode von layim zum Integrieren des Rechtsklickmenüs in JavaScript

Inhaltsverzeichnis 1. Wirkungsdemonstration 2. Im...

js implementiert das Umschalten von Bildern per Maus (ohne Timer)

In diesem Artikelbeispiel wird der spezifische Co...

Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation

Die Trennung von Lese- und Schreibzugriffen in Da...

MySql-Freigabe der Nullfunktionsnutzung

Funktionen zu Null in MySql IFNULL ISNULL NULLIF ...

Nginx-Beispielcode zur Implementierung dynamischer und statischer Trennung

In Kombination mit dem Szenario in diesem Artikel...

Erstellen Sie ein SSL-Zertifikat, das in nginx und IIS verwendet werden kann

Inhaltsverzeichnis Erstellen eines SSL-Zertifikat...