⊗jsSpItOL 65 of 294 menu

Iteratoru vienreizējā darbība JavaScript

Katrs iterators var piedalīties ciklā tikai vienu reizi. Tas ir nedaudz negaidīti, bet loģiski - jo iztīrītais iterators iestata savu done uz false, kas nozīmē, ka tas vairs nevar tikt iterēts.

Pārliecināsimies par to. Pieņemsim, ka mums ir šāds ģenerators:

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

Izveidosim iteratoru:

let iter = func();

Iziterēsim iteratoru ar vienu ciklu:

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

Tagad iziterēsim iteratoru ar diviem cikliem:

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

Lai atrisinātu problēmu, katram jaunam ciklam ir jāizveido savs iterators:

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 }

Varam vienkāršot:

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

Izlabojiet kļūdu, kas pieļauta sekojošajā kodā:

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); }
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt