Cykly v generátoroch v JavaScripte
Vo vnútri generátorov je možné používať
cykly. Zároveň môžeme cykly pozastaviť
pomocou yield. Pozrime sa na príklad.
Budeme cyklus pozastavovať v každej iterácii:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
Získame iterátor:
let iter = func();
Overíme fungovanie nášho iterátora:
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}
Vytvorte iterátor, ktorého každé volanie
vráti čísla od 10
do nuly.
Vytvorte generátor, ktorý ako parameter bude prijímať číslo. Nech každé volanie iterátora zníži číslo o jednu, kým nebude dosiahnutá nula.
Vytvorte generátor, ktorý ako parameter bude prijímať číslo. Nech každé volanie iterátora zníži číslo na polovicu a vráti výsledok. A tak ďalej, kým číslo nebude menšie ako jedna.
Vytvorte iterátor, ktorého každé volanie vráti ďalšiu mocninu dvojky.
Vytvorte iterátor, ktorého každé volanie vráti ďalšie Fibonacciho číslo.