Przechodzenie pętlą po obiekcie iteratora

0

Chciałbym przejść pętlą po obiekcie iteratora stworzone na podstawie generatora.
Jak tak próbuje to jest ok:

function* generator() {
  for (let i = 0; i < 10; i++) {
    yield i;
  }
}

const iterator = generator();

for (const item of iterator) {
  console.log(item);
}

Czemu natomiast nie mogę pętli for ... of zamienić na forEacha?:

function* generator() {
  for (let i = 0; i < 10; i++) {
    yield i;
  }
}

const iterator = generator();

iterator.forEach((item) => console.log(item))

Dostaje komunikat: Uncaught TypeError: iterator.forEach is not a function

Czy ten iterator po prostu nie implementuje pętli forEach?

0

Jeśli jest nam mocno potrzebna taka funkcjonalność to zawsze możemy napisać własną implementacje forEach, ale nie polecałbym takiego podejścia.

function* generator() {
  for (let i = 0; i < 10; i++) {
    yield i;
  }
}

/* Tutaj moja upośledzona implementacja, która po prostu wywołuje "for of" pod spodem :D */
generator.prototype.forEach = function(callback) { 
  for (const el of generator()) {
    callback(el);    
  }
}

const iterator = generator();

iterator.forEach((item) => {
  console.log(item);
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1