Heim > Web-Frontend > js-Tutorial > Hauptteil

Erklären Sie die verschiedenen Generatortypen in JavaScript

PHPz
Freigeben: 2023-09-01 13:33:14
nach vorne
980 Leute haben es durchsucht

解释 JavaScript 中不同类型的生成器

Wie wir alle wissen, ist JavaScript eine leichtgewichtige Programmiersprache und Generatoren wurden in ECMAScript 2015 eingeführt. Ein Generator ist ein Prozess, der viele Ausgabewerte hat und gestoppt und gestartet werden kann. In JavaScript bestehen Generatoren aus Generatorfunktionen, die eine Iteration von Generatorobjekten erzeugen.

In diesem Artikel besprechen wir Generatoren in JavaScript und die verschiedenen Arten von Generatoren in JavaScript ausführlich mit Syntax und Beispielen.

Einführung in Generatoren in JavaScript

Die Generatorfunktion ist die gleiche wie die reguläre Funktion, mit einem Unterschied kann die Generatorfunktion jedoch fortgesetzt und angehalten werden. Im Allgemeinen werden Funktionen in JavaScript nicht beendet, sobald sie aufgerufen werden. Typischerweise taucht das Konzept der Generatoren in der asynchronen Programmierung auf.

Syntax von Generatorfunktionen in JavaScript

Jetzt besprechen wir die Syntax von Generatorfunktionen in JavaScript und vergleichen sie mit regulären Funktionen.

Die

function *-Syntax wird zum Erstellen von Generatorfunktionen verwendet und das Schlüsselwort yield wird zum Anhalten dieser Funktionen verwendet.

function * genFunc() {
   yield 'Hello';
   yield 'World';
}
const g = genFunc(); // g is a generator
g.next(); // { value: 'Hello', done: false }
g.next(); // { value: 'World', done: false }
g.next(); // { value: undefined, done: true }
…
Nach dem Login kopieren

Wenn eine Generatorfunktion zum ersten Mal aufgerufen wird, wird kein Code ausgeführt, sondern ein Generatorobjekt zurückgegeben. Werte werden durch den Aufruf der next()-Methode des Generators verbraucht, die den Code ausführt, bis er auf das Schlüsselwort yield stößt. An diesem Punkt pausiert er und wartet, bis next() erneut aufgerufen wird.

Im obigen Code erzeugen nach unserer letzten Anweisung aufeinanderfolgende Aufrufe von g.next() einfach dasselbe Rückgabeobjekt: {value: undefined, did: true}, weil wir uns in der „Welt“ unseres Codes „Nothing“ befinden wird danach definiert. genFunc()-Funktion.

Das Schlüsselwort

yield unterbricht die Ausführung einer Generatorfunktion und stellt dem Aufrufer des Generators den Wert des darauf folgenden Ausdrucks bereit. Es ist vergleichbar mit der Generator-basierten Version des Schlüsselworts return. Kann nur direkt von einer Generatorfunktion aufgerufen werden, die yield enthält.

Mit regulären Funktionen vergleichen

function regFunc() {
   console.log("Hello World");
}
// Hello World
Nach dem Login kopieren

In regulären Funktionen verwenden wir nicht die Funktion „*“ und wie Sie im obigen Beispiel sehen können, wird auch die Funktion yield nicht verwendet. Wie wir oben besprochen haben, besteht der Hauptunterschied zwischen regulären Funktionen und Generatorfunktionen darin, dass Generatorfunktionen gestoppt und angehalten werden können. Aus dem obigen Beispiel können Sie sehen, dass wir uns nicht dafür entschieden haben, es zu stoppen, sondern direkt die gesamte Anweisung gedruckt haben, nämlich „Hallo Welt“.

Da wir die Grundlagen der Generatorfunktionen verstanden haben, gehen wir nun zu den verschiedenen Arten von Generatorfunktionen über -

Normaler Generator

In einem normalen Generator fungiert der Generator als Iterator und generiert den nächsten Wert, nachdem jeder Aufruf der next()-Methode ausgeführt wurde, um die Funktion zu generieren. Schauen wir uns ein Beispiel an, in dem wir Zahlen nacheinander bis zum Ende der Liste generieren.

function* generator_function(){
   for(var cur = 0 ; cur<7; cur++){
      yield cur;
   }
}
var object_generator = generator_function();
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
Nach dem Login kopieren

Im obigen Code haben wir eine normale generische Funktion erstellt, die das Schlüsselwort yield enthält, und sie mehrmals mit der Funktion next() aufgerufen.

Generator mit Parametern

Generatoren mit Parametern unterscheiden sich ein wenig von normalen Generatoren. Dieses Mal müssen wir einen Parameter mit der Funktion next() übergeben, um ihn an die Generatorfunktion zu senden. Außerdem wird jedes Mal, wenn wir einen Parameter übergeben, dieser nach dem Schlüsselwort yield und nicht davor gespeichert. Wir werden dieses Konzept in den folgenden Beispielen verstehen -

function* generator_function(){
   console.log("start of the function")
   temp = yield;
   console.log("This is the first value passed: " + temp)
   temp = yield;
   console.log("This is the second value passed: " + temp)
}
var object_generator = generator_function();
object_generator.next("This is not the first ");
object_generator.next("this is first");
object_generator.next("this is second");
object_generator.next();
Nach dem Login kopieren

Im obigen Code haben wir die Generatorfunktion definiert und dieses Mal die Parameter an sie übergeben. Wenn wir das Objekt zum ersten Mal aufrufen, werden die angegebenen Parameter nicht gedruckt, da diese vor dem Schlüsselwort „yield“ gesendet werden und dann, nachdem der gesendete Wert in der Variablen gespeichert und gedruckt wurde, der Wert das zweite Mal gedruckt wird. Danach wird Es passiert nichts, da derzeit keine Ausgabe erfolgt.

Generatoren mit Objekteigenschaften

Generatoren können als Objekte verwendet werden und wenn wir sie aufrufen, geben sie einfach den ihnen zugewiesenen Wert zurück und können gedruckt werden. Um dieses Konzept zu verstehen, schauen wir uns ein Beispiel an.

function* generator_function(){
   yield "First value"
   yield "Second value"
   yield "Third value"
}
var object_generator = generator_function();
console.log(object_generator.next().value);
console.log(object_generator.next().value);
console.log(object_generator.next().value);
Nach dem Login kopieren

Im obigen Code definieren wir zunächst drei Ertragsausdrücke, und nach ihnen gibt es eine Zeichenfolge. Wenn wir den Generator aufrufen, wird die Zeichenfolge nach ihnen zurückgegeben.

Es gibt auch andere Arten von Generatoren, z. B. Rücklauftypen, einige Generatoren enthalten einen weiteren Generator usw.

Fazit

In dem Artikel haben wir erfahren, dass die Generatorfunktion mit der regulären Funktion identisch ist, mit einem Unterschied jedoch, dass die Generatorfunktion fortgesetzt und angehalten werden kann. Im Allgemeinen werden Funktionen in JavaScript nicht beendet, sobald sie aufgerufen werden. Typischerweise taucht das Konzept der Generatoren in der asynchronen Programmierung auf. Es gibt viele Arten von Generatoren, z. B. gewöhnliche Generatoren mit Objekten wie Parametern und Eigenschaften, Generatoren, die einen anderen Generator enthalten usw.

Das obige ist der detaillierte Inhalt vonErklären Sie die verschiedenen Generatortypen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!