Pętle w generatorach w JavaScript
Wewnątrz generatorów można używać
pętli. Jednocześnie możemy stawiać pętle
na pauzę za pomocą yield. Spójrzmy
na przykładzie. Będziemy stawiać
pętlę na pauzę w każdej iteracji:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
Otrzymamy iterator:
let iter = func();
Sprawdźmy działanie naszego iteratora:
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Stwórz iterator, każde wywołanie którego
będzie zwracać liczby od 10
do zera.
Stwórz generator, który parametrem będzie przyjmować liczbę. Niech każde wywołanie iteratora zmniejsza liczbę o jeden, dopóki nie zostanie osiągnięte zero.
Stwórz generator, który parametrem będzie przyjmować liczbę. Niech każde wywołanie iteratora zmniejsza liczbę dwukrotnie i zwraca wynik. I tak, dopóki liczba nie stanie się mniejsza niż jeden.
Stwórz iterator, każde wywołanie którego będzie zwracać kolejną potęgę dwójki.
Stwórz iterator, każde wywołanie którego będzie zwracać kolejną liczbę Fibonacciego.