Generatoren sind Funktionen, die verlassen und später wieder betreten werden können. Ihr Kontext (Variablenbindung) bleibt über die Wiedereintritte hinweg erhalten.
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/function*#Beschreibung
function* amountOfRandomNumbers(count: number) {
for (let i = 0; i < count; i++) {
yield Math.random();
}
}
for (let randomNumber of amountOfRandomNumbers(7)) {
console.log(`Random Number: ${randomNumber.toFixed(2)}`);
}
Diese Generatoren Funktion gibt sieben zufällige Zahlen aus, welche mit Math.random erzeugt werden.
Generatoren können mit einer for … of Schleife iteriert werden. Was im Grunde genommen, folgenden Aufrufen gleicht:
let iterator = amountOfRandomNumbers(7);
let randomNumber;
randomNumber = iterator.next().value;
randomNumber = iterator.next().value;
randomNumber = iterator.next().value;
// ... usw.
Der Aufruf .next() enthält auch Informationen darüber ob wir das Ende des Iterators erreicht haben. Dies möchte ich euch an folgendem Beispiel zeigen:
let iterator = amountOfRandomNumbers(1);
console.log(iterator.next());
console.log(iterator.next());
/*
Ausgabe:
[LOG]: { "value": 0.31090493471228164, "done": false }
[LOG]: { "done": true }
*/
D.h. wir bekommen immer wenn wir .next() aufrufen ein Objekt zurück, welches ein value sowie done Schlüssel beinhaltet. Anhand dessen, können wir prüfen ob wir bereits am Ende angekommen sind.
2910cookie-checkTypeScript: Generatoren (Generators)