⊗jsSpItOL 65 of 294 menu

Jednorazová práca iterátorov v JavaScripte

Každý iterátor sa môže zúčastniť cyklu iba raz. Je to trochu nečakané, ale logické - pretože prejdený iterátor nastaví svoje done na false, čo znamená, že už nemôže byť ďalej prechádzaný.

Presvedčme sa o tom. Nech máme nasledujúci generátor:

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

Vytvorme iterátor:

let iter = func();

Prejdime iterátor jedným cyklom:

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

A teraz prejdime iterátor dvoma cyklami:

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

Na vyriešenie problému je potrebné pre každý nový cyklus vytvoriť vlastný iterátor:

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 }

Môžeme zjednodušiť:

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

Opravte chybu, ktorá bola urobená v nasledujúcom kóde:

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); }
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť