Ժեներատորները JavaScript-ում

Գոյություն ունեն հատուկ ֆունկցիաներ, որոնց օգնությամբ կարելի է ստեղծել սեփական իտերատորներ: Նման ֆունկցիաները կոչվում են ժեներատորներ: Նման ֆունկցիաների անունները պետք է սկսվեն աստղանիշով.

javascriptfunction *func() {
  
}

Ժեներատորների ներսում օգտագործվում է yield հիմնաբառը, որը նշում է, թե ինչ պետք է վերադարձնի իտերատորը հաջորդ կանչի ժամանակ: Օրինակ եկեք անենք այնպես, որ առաջին կանչը վերադարձնի 1, երկրորդը - 2, իսկ երրորդը - 3.

javascriptfunction *func() {
  yield 1;
  yield 2;
  yield 3;
}

Ժեներատորը իր արդյունքում վերադարձնում է իտերատոր.

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

Ստեղծեք իտերատոր, որի յուրաքանչյուր կանչ կվերադարձնի 5-ից մինչև 1 թվերը: