Generator iteration
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
-
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.
-
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(); -
Sonuç nesnesini eşleştir
- { value, done }
- next() sonucu
- done: true
- generator bitti
- value: undefined
- bitiş değeri