⊗jsSpItOL 65 of 294 menu

Jednokratni rad iteratora u JavaScript-u

Svaki iterator može da učestvuje u ciklusu samo jednom. Ovo je pomalo neočekivano, ali logično - jer završeni iterator postavlja svoje done na false, što znači da se više ne može prebirati.

Uverimo se u ovo. Neka imamo sledeći generator:

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

Napravimo iterator:

let iter = func();

Prođimo kroz iterator jednim ciklusom:

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

A sada prođimo kroz iterator dva ciklusa:

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

Za rešenje problema potrebno je za svaki novi ciklus napraviti svoj iterator:

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 }

Možemo pojednostaviti:

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

Ispravite grešku koju ste napravili u sledećem kodu:

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); }
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij