Ցիկլերը ՋավաՍկրիպտի գեներատորներում

Գեներատորների ներսում կարելի է օգտագործել ցիկլեր: Այս դեպքում մենք կարող ենք դադարեցնել ցիկլերը օգտագործելով yield: Եկեք նայենք օրինակին: Մենք կդադարեցնենք ցիկլը ամեն իտերացիայի ժամանակ:

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

Ստանում ենք իտերատոր:

javascriptlet iter = func();

Ստուգենք մեր իտերատորի աշխատանքը:

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

Ստեղծեք իտերատոր, որի ամեն կանչ կվերադարձնի թվեր 10-ից մինչև զրո:

Задание 2

Ստեղծեք գեներատոր, որն իր պարամետրով կընդունի թիվ: Թող իտերատորի ամեն կանչ նվազեցնի թիվը մեկով, մինչև չհասնի զրոյի:

Задание 3

Ստեղծեք գեներատոր, որն իր պարամետրով կընդունի թիվ: Թող իտերատորի ամեն կանչ նվազեցնի թիվը երկու անգամ և վերադարձնի արդյունքը: Եվ այդպես, մինչև թիվը դառնա մեկից փոքր:

Задание 4

Ստեղծեք իտերատոր, որի ամեն կանչ կվերադարձնի երկուսի հաջորդ աստիճանը:

Задание 5

Ստեղծեք իտերատոր, որի ամեն կանչ կվերադարձնի Ֆիբոնաչիի հաջորդ թիվը: