JavaScript erstellt häufig Lösungen für verschiedene Probleme, insbesondere mit der Ankunft der ES6 -Version von JavaScript. Eines der wichtigsten Merkmale, die in ES6 eingeführt wurden, waren Generatoren, Generatoren in JavaScript werden mit Iteratoren verwendet, um einen Datenfluss oder einen Datenstrom zu erstellen. Generatoren helfen uns, Probleme mit der Rückruffunktion zu vermeiden.
Was sind eigentlich Generatoren
In einfachen Worten sind Generatoren besondere Funktionen; Im Gegensatz zu normalen Funktionen, bei denen nur eine Rückgabeanweisung vorliegt, geben die Generatoren mehrere Werte zurück, jedoch zu unterschiedlichen Zeiten.
Um beschreibender zu sein, sind Generatoren Funktionen, die den Wert mitten in der Funktion zurückgeben und dann aufhören, nach dem Speichern des Zustands zu ausgeführt. Dieser Schritt zur Rückgabe eines Wertes, des Speicherstatus und der Anhalten der Ausführung wird aufgerufen nachgeben ein Wert und eine Pause.
Während dieser Pause kann das Programm an einer anderen Funktionalität arbeiten, und wenn wir benötigt werden, wird der Generator gebeten, den nächsten Wert zurückzugeben, aber anstatt die gesamte Funktion neu zu starten Nächster Wert. Erstellen eines konstanten Datenstroms von Daten. Deshalb werden diese Funktionen als „Generatoren“ bezeichnet, da sie verwendet werden, um den Datenstrom zu generieren.
Wir können uns die folgenden Arbeitsdiagramme ansehen, um den Unterschied zwischen normalen und Generatorfunktionen besser zu verstehen:
Und Generatorfunktion funktioniert so:
So definieren Sie eine Generatorfunktion?
Da Generatorfunktionen spezielle Funktionen sind "Funktion*" - Sternchen nach dem Schlüsselwort der Funktion. Die Syntax ist wie:
Funktion* FunktionName (Params)''
Notiz:
Rückgabewert: Objekt [Generator] - ein Generatorobjekt ODER undefiniert, wenn Generator leer ist
Wir kennen jetzt mit der Funktionen einer Generatorfunktion, aber wir sind immer noch nicht mit seinem Rückgabetyp vertraut, der das „Generatorobjekt“ ist.
Was ist ein Generatorobjekt?
Wenn eine Generatorfunktion erstellt wird, gibt sie ein Objekt zurück, das wir in einer Variablen initialisieren müssen, diese Variable wird dann als Generatorobjekt bezeichnet. Dieses Generatorobjekt wird verwendet, um den nächsten Wert aus der Funktion zu erhalten.
Syntax Ein Generatorobjekt initialisieren
variable = GeneratorFunctionName (Argumente);Nachdem Sie das Generatorobjekt erstellt haben, können Sie die Funktion verwenden “Objekt.nächste()"
Der Objekt.nächste() Gibt ein JSON -Objekt mit zwei Eigenschaften zurück, einer ist der "Wert" und der andere ist das "Erledigt" Eigentum.
Werte aus einer Generatorfunktion abrufen
Erstellen wir eine einfache Generatorfunktion, die uns jedes Mal, wenn sie aufgerufen wird, einen neuen Wert zurückgibt, mit den folgenden Codezeilen:
Funktionsgenerator()Nachdem wir einen Generator haben, müssen wir ihn mit einem Generatorobjekt initialisieren, tun wir dies mit der folgenden Anweisung:
const genObject = generator ();Jetzt haben wir auch das Generatorobjekt. Alles was wir jetzt tun müssen, ist das anzurufen nächste() Funktion des Generatorobjekts und drucken Sie das JSON -Objekt mit dem Konsole.Protokoll() Funktion.
Konsole.log (Genobject.nächste());Der komplette Code -Snippet sieht folgendermaßen aus:
Funktionsgenerator()Wir erhalten die folgende Ausgabe:
Wie Sie sehen können, haben wir 3 verschiedene JSON -Objekte mit 3 verschiedenen Aufrufen derselben Generatorfunktion gedruckt. Aber manchmal wollen wir den Wert verwenden, nicht das JSON -Objekt. Wir können dies tun, indem wir auf die zugreifen Wert Eigenschaft des JSON -Objekts mit der folgenden Codezeile:
Konsole.log (Genobject.nächste().Wert);Mit diesen Zeilen erhalten wir die folgende Ausgabe:
Wie Sie sehen können, die Objekt.nächste().Wert Gibt uns einen Wert zurück, den wir sogar auf eine andere Funktion übergeben können.
Arbeiten der Generatorfunktion bei der gleichzeitigen Codeausführung
Lassen Sie uns für dieses Tutorial eine einfache Generatorfunktion erstellen, die Zahlen von 1 bis 5 ergibt. Nach jeder Zahl, die wir vom Generator abrufen.
Der erste Schritt besteht darin, eine Generatorfunktion zu erstellen, die 5 verschiedene Zahlen für 5 verschiedene Aufrufe mit den folgenden Codezeilen ergibt:
Funktionsgenerator()Wie Sie sehen können, haben wir eine Schleife erstellt, die 1 neue Integer für jeden Generator -Ertragsaufruf zurückgibt und uns auffordert, wenn sich das Programm in der Generatorfunktion befindet.
Jetzt müssen wir diese Generatorfunktion mit dem Generatorobjekt mit der folgenden Codezeile initialisieren.
const genObject = generator ();Jetzt benötigen wir eine Funktion, die einige Arbeiten an den ausgegebenen Werten erstellt. Erstellen Sie die Funktion mit den folgenden Zeilen:
FUNKTION TABLEPRINTER (num)Wir haben eine Generatorfunktion, ein Generatorobjekt und eine Funktion, die auf einigen Werten funktioniert, die darin übergeben werden. Jetzt brauchen wir nur noch ein Iterator, der das Generatorobjekt iteriert und die Werte an die Funktion übergibt. Wir tun dies, indem wir die folgenden Codezeilen verwenden:
erzieltValue = genObject.nächste().Wert;Was dieser Code tun wird, ist, dass er den nächsten Wert vom Generator nimmt und ihn in einer Variablen speichert. Dann wird in der while -Schleife prüft, ob die Variable undefiniert ist oder nicht, und ob sie nicht undefiniert ist, übergibt sie diesen Wert an die Funktion “TABLEPRINTER ” und übergehen zum nächsten Wert.
Der komplette Code -Snippet lautet wie:
Funktionsgenerator()Die Ausgabe des folgenden Codes lautet:
Wie Sie sehen können, geht das Programm in die Generatorfunktion und ergibt einen neuen Wert, speichert Zustände, macht die Ausführung der Funktion, geht in die “in die“ gehtTABLEPRINTER ” Funktion und führt dort Ausführung durch. Sobald es fertig ist, geht es wieder in die Generatorfunktion für einen neuen Ertrag. Dieser ganze Vorgang wird wiederholt, bis der Generator immer wieder neue Erträge produziert. So machen Sie es zu einem Datenstrom von Daten.
Das ist es für Generatoren in JavaScript.
Abschluss
Generatoren sind besondere Funktionen, die ihre Ausführung intensiv mit einem Wert einstellen, ihren Zustand retten und das Programm ermöglichen, andere Aufgaben auszuführen. Bei Bedarf die Generatorfunktion “Lebensläufe “ ihre Ausführung des Staat. Generatoren werden verwendet, um einen konstanten Datenstrom zu generieren. Sie werden in Zusammenarbeit mit Versprechen und Iteratoren verwendet, um einen unendlichen Datenstrom zu erstellen und Probleme mit Rückruffunktionen zu vermeiden.