Was ist ein Generator?Ein Generator ist ein Code, der innerhalb einer Funktion ausgeführt wird.
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:
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:
Lassen Sie mich erklären, wie das Programm funktioniert. GeneratorfunktionenZunä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 GeneratorfunktionNachdem 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:
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 SchleifenObwohl 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:
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. ZusammenfassenDies 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:
|
<<: Freundliche Alternativen zum Find Tool in Linux
>>: Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana
<br />Das sinnvolle Hinzufügen von Bildern k...
Dieser Artikel beschreibt, wie man Redis- und php...
Inhaltsverzeichnis 1. Wirkungsdemonstration 2. Im...
Suchen Sie das Installationsverzeichnis von Virtu...
Der Grund dafür ist, dass alle Dateien in UTF8 kod...
In diesem Artikelbeispiel wird der spezifische Co...
Die Trennung von Lese- und Schreibzugriffen in Da...
In SQL wird GROUP BY verwendet, um Daten in den E...
Vorwort Das Transaktionsdatenwörterbuch und das a...
Funktionen zu Null in MySql IFNULL ISNULL NULLIF ...
1. Installation der dekomprimierten Version (1). ...
In Kombination mit dem Szenario in diesem Artikel...
Die Kodierung von Webseiten wird im Englischen als...
Inhaltsverzeichnis Erstellen eines SSL-Zertifikat...
Automatische Aktualisierung der Webseite: Fügen Si...