Eine Generatorfunktion in JavaScript ist eine spezielle Art von Funktion, die während ihrer Ausführung angehalten und fortgesetzt werden kann. Es wird mithilfe der Function*-Syntax definiert und verwendet das Schlüsselwort yield, um Werte sequentiell zu erzeugen.
Hauptmerkmale der Generatorfunktion
- Definieren Sie mit Funktion*:
function* generatorFunction(){
yield 1;
yield 2;
yield 3;
yield 4;
}
2.Gibt einen Iterator zurück
- Wenn eine Generatorfunktion aufgerufen wird, wird sie nicht sofort ausgeführt.
Stattdessen wird ein Iteratorobjekt zurückgegeben.
- Der Iterator verfügt über eine next()-Methode, die zur Steuerung des verwendet wird
Ausführung.
-
Ertragsschlüsselwort:
- Das yieldkeyword wird verwendet, um einen Wert zu erzeugen und den Generator anzuhalten.
- Wenn next() erneut aufgerufen wird, nimmt der Generator die Ausführung ab dem wieder auf
Punkt, an dem es angehalten wurde.
Beispiel einer Generatorfunktion:
function* generatorFunction(){
console.log("start");
yield 1;
console.log("Resume");
yield 2;
console.log("End");
}
const gen = generatorFuntion();
console.log(gen.next());
console.log(gen.next());
console.log(gen.next());
Ausgabe
start
{value: 1, done: false}
Resume
{value: 2, done: false}
End
{Value: undefined, done: true}
Wie es funktioniert
- Ausführung bei next():
- Wenn next() zum ersten Mal aufgerufen wird, startet der Generator
Ausführung und läuft bis zur ersten Ausbeute.
- es gibt ein Objekt {value, done} zurück, wobei:
-
value: Der durch yield erzeugte Wert.
-
done: Ein boolescher Wert, der angibt, ob der Generator abgeschlossen ist
- Pause und Fortfahren.
- Die Funktion unterbricht die Ausführung, wenn sie auf yield trifft.
- Es wird von der Pause fortgesetzt, wenn next() erneut aufgerufen wird.
- Abschluss:
- Wenn die Generatorfunktion abgeschlossen ist, wird die Eigenschaft done
wahr.
Das obige ist der detaillierte Inhalt vonWas ist eine Generatorfunktion in JavaScript? und wie funktioniert es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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