⊗jsSpItOL 65 of 294 menu

იტერატორების ერთჯერადი მოქმედება JavaScript-ში

თითოეული იტერატორი შეუძლია მონაწილეობა მიიღოს ციკლში მხოლოდ ერთხელ. ეს ოდნავ მოულოდნელია, მაგრამ ლოგიკურია - ყოველივე ამის შემდეგ, გავლილი იტერატორი აყენებს თავის 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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა