CodeBlanks Logo Icon CodeBlanks

Generator iteration

JavaScript kursu · İleri seviye · Ders 50/100

next() ile generator'ı adım adım ilerletmeyi öğrenirsin.

next() metodu

Bir generator nesnesinin .next() metodu bir nesne döndürür. Bu nesnenin iki özelliği vardır: value (üretilen değer) ve done (generator bitmiş mi?). done false iken daha değer vardır; true olunca generator tamamlanmıştır.

const g = counter();
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: undefined, done: true }

done ve tembel değerlendirme

done özelliği true olduğunda generator bitmiş demektir. Bu noktadan sonra value undefined olur. Generator, return gördüğünde veya gövdesinin sonuna ulaştığında biter.

Bu tembel değerlendirme sayesinde, değerler yalnızca istendiğinde hesaplanır. Sonsuz bir generator yazabilir ve yalnızca istediğin kadarını tüketebilirsin; bellek asla dolmaz.

Uygulama Üç kez next() çağır

numbers adında bir generator yaz: 10 ve 20 değerlerini üretsin. gen oluştur ve .next() metodunu üç kez çağırıp her sonucu console.log ile yazdır. Üçüncü çağrıda done değerini true olarak görmelisin.

Örnek çözümü göster
function* numbers() {
  yield 10;
  yield 20;
}
const gen = numbers();
console.log(gen.next());
console.log(gen.next());
console.log(gen.next());

Kendini test et

  1. gen.next() ne döndürür?

    function* counter() { yield 5; }
    const gen = counter();
    gen.next();
    • Sadece 5 değerini
    • { value, done } nesnesini
    • Bir Promise nesnesini
    • Bir dizi
    Cevabı göster

    { value, done } nesnesini — Doğru! .next() her zaman { value, done } yapısında bir nesne döndürür.

  2. next() çağrısını tamamla

    function* counter() { yield 5; }
    const gen = counter();
    const result = gen.____;
    Cevabı göster
    function* counter() { yield 5; }
    const gen = counter();
    const result = gen.next();
  3. Sonuç nesnesini eşleştir

    { value, done }
    next() sonucu
    done: true
    generator bitti
    value: undefined
    bitiş değeri

İleri seviye bölümündeki tüm dersler