Funksionimi një herë i përsëritësve në JavaScript

Çdo përsëritës mund të marrë pjesë në një cikël vetëm një herë. Kjo është pak e papritur, por logjike - në fund të fundit, përsëritësi i përshkuar e vendos done të tij në false, që do të thotë se nuk mund të përsëritet më.

Le ta verifikojmë këtë. Le të kemi gjeneruesin e mëposhtëm:

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

Le të krijojmë një përsëritës:

javascriptlet iter = func();

Le të përsërisim përsëritësin me një cikël:

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

Tani le të përsërisim përsëritësin me dy cikle:

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

Për të zgjidhur problemin, duhet për çdo cikël të ri të krijohet përsëritësi i vet:

javascriptlet 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
}

Mund ta thjeshtojmë:

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

for (let elem of func()) {
  console.log(elem); // 1, 2, 3
}
Задание 1

Korrigjojeni gabimin e bërë në kodin e mëposhtëm:

javascriptfunction *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);
}