Циклы в генераторах в JavaScript
Внутри генераторов можно использовать
циклы. При этом мы можем ставить циклы
на паузу с помощью yield
. Давайте
посмотрим на примере. Будем ставить
цикл на паузу каждую итерацию:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
Получим итератор:
let iter = func();
Проверим работу нашего итератора:
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}
Создайте итератор, каждый вызов которого
будет возвращать числа от 10
до нуля.
Сделайте генератор, который параметром будет принимать число. Пусть каждый вызов итератора уменьшает число на единицу, пока не будет достигнут ноль.
Сделайте генератор, который параметром будет принимать число. Пусть каждый вызов итератора уменьшает число в два раза и возвращает результат. И так, пока число не станет меньше единицы.
Сделайте итератор, каждый вызов которого будет возвращать следующую степень двойки.
Сделайте итератор, каждый вызов которого будет возвращать следующее число Фибоначчи.