⊗jsSpItOL 65 of 294 menu

JavaScript-те итераторлардың бір реттік жұмысы

Әрбір итератор циклде тек бір рет ғана қатыса алады. Бұл сәл күтпеген жайт, бірақ логикалық - өйткені өткен итератор өзinin done мәнін false етіп орнатады, яғни ол енді әлі де қайталана алмайды.

Мұның дұрыстығына көз жеткізейік. Бізде келесі генератор бар делік:

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

Итератор жасайық:

let iter = func();

Итераторды бір циклмен қайталайық:

for (let elem of iter) { console.log(elem); // 1, 2, 3 }

Ендь итераторды екі циклмен қайталайық:

for (let elem of iter) { console.log(elem); // 1, 2, 3 } for (let elem of iter) { console.log(elem); // жұмыс істемейді }

Мәселені шешу үшін әрбір жаңа цикл үшін өз итераторын жасау керек:

let iter1 = func(); for (let elem of iter1) { console.log(elem); // 1, 2, 3 } let iter2 = func(); for (let elem of iter2) { console.log(elem); // 1, 2, 3 }

Жеңілдетейік:

for (let elem of func()) { console.log(elem); // 1, 2, 3 } for (let elem of func()) { console.log(elem); // 1, 2, 3 }

Мына кодта жіберілген қатені түзетіңіз:

function *func() { for (let i = 1; i <= 3; i++) { yield i; } } let elems = func(); for (let elem of elems) { console.log(elem); } for (let elem of elems) { console.log(elem); }
Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау