javascript / intermediate
Snippet
Unendliche Sequenzen mit Generatoren
Generatoren sind spezielle Funktionen, die angehalten und fortgesetzt werden können. Eine 'while (true)'-Schleife in einem Generator blockiert den Browser nicht, da das Schlüsselwort 'yield' die Ausführung pausiert, bis der nächste Wert angefordert wird.
snippet.js
1
2
3
4
5
6
7
8
9
10
function* idGenerator() {let id = 1;while (true) {yield `ID-${id++}`;}}const gen = idGenerator();console.log(gen.next().value); // ID-1console.log(gen.next().value); // ID-2
Erklärung
1
function* idGenerator() {
Das Sternchen (*) definiert dies als eine Generator-Funktion.
2
yield `ID-${id++}`;
Pausiert die Ausführung und gibt den aktuellen ID-String an den Aufrufer zurück.
3
const gen = idGenerator();
Der Aufruf des Generators gibt ein Iterator-Objekt zurück, führt den Code aber noch nicht aus.
4
gen.next().value
Setzt den Generator bis zum nächsten Yield fort und ruft den Wert ab.