Loopar i generatorer i JavaScript

Inuti generatorer kan man använda loopar. Samtidigt kan vi pausa loopar med yield. Låt oss titta på ett exempel. Vi kommer att pausa loopen varje iteration:

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

Vi får en iterator:

javascriptlet iter = func();

Låt oss kontrollera hur vår iterator fungerar:

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

Skapa en iterator, där varje anrop skall returnera tal från 10 till noll.

Задание 2

Skapa en generator, som tar ett tal som parameter. Låt varje anrop av iteratorn minska talet med ett, tills noll uppnås.

Задание 3

Skapa en generator, som tar ett tal som parameter. Låt varje anrop av iteratorn minska talet till hälften och returnera resultatet. Och så vidare, tills talet blir mindre än ett.

Задание 4

Skapa en iterator, där varje anrop skall returnera nästa potens av två.

Задание 5

Skapa en iterator, där varje anrop skall returnera nästa Fibonacci-tal.