Lussen in generatoren in JavaScript

Binnen generatoren kunnen lussen gebruikt worden. Tegelijkertijd kunnen we lussen pauzeren met yield. Laten we een voorbeeld bekijken. We zetten de lus elke iteratie op pauze:

javascriptfunction *func() {
  for (let i = 1; i <= 3; i++) {
    yield i;
  }
}

We krijgen een iterator:

javascriptlet iter = func();

Laten we de werking van onze iterator controleren:

javascriptconsole.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}
Задание 1

Maak een iterator aan, waarvan elke aanroep getallen van 10 tot nul teruggeeft.

Задание 2

Maak een generator die een getal als parameter accepteert. Laat elke aanroep van de iterator het getal met één verminderen, totdat nul is bereikt.

Задание 3

Maak een generator die een getal als parameter accepteert. Laat elke aanroep van de iterator het getal halveren en het resultaat teruggeven. En zo verder, totdat het getal kleiner wordt dan één.

Задание 4

Maak een iterator, waarvan elke aanroep de volgende macht van twee teruggeeft.

Задание 5

Maak een iterator, waarvan elke aanroep het volgende Fibonacci-getal teruggeeft.