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;
}
Nach dem Login kopieren
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());
Nach dem Login kopieren
Ausgabe
start
{value: 1, done: false}
Resume
{value: 2, done: false}
End
{Value: undefined, done: true}
Nach dem Login kopieren
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!