JavaScript'de Generators Nedir?

Generators (Üreticiler), JavaScript'in fonksiyonlarından farklı bir şekilde çalışan özel bir tür fonksiyon tipidir. Generators, fonksiyonlar arasında duraklama ve devam etme yeteneğine sahip olmalarıyla dikkat çekerler. Bir generator fonksiyonu çağrıldığında, fonksiyon bir generator nesnesi döndürür. Bu nesne, next() metodu aracılığıyla fonksiyonun çalışmasını kontrol etmeye olanak tanır.

Generator fonksiyonları, function* ifadesi ile tanımlanır ve yield ifadesi kullanarak değerler üretebilirler. yield ifadesi, fonksiyonun bir değer üretmesini ve duraksamasını sağlar. Generators, iteratör protokolünü uygulayarak sayısız değer üretmek için kullanılabilir.

function* sayac() {
    let i = 0;
    while (true) {
        yield i++;
    }
}

const iterator = sayac();
console.log(iterator.next().value); // 0
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2

Yukarıdaki örnekte, sayac isimli bir generator fonksiyonu tanımlanmıştır. Bu fonksiyon sonsuz bir döngü içinde çalışır ve her çağrıldığında bir değer üretir. next() metodu, generator fonksiyonunun çalışmasını kontrol eder ve her çalıştırıldığında bir sonraki üretilen değeri döndürür.

Generator fonksiyonları sayesinde kompleks döngüler, asenkron işlemler ve büyük veri küme işlemleri gibi senaryolarda daha temiz ve okunabilir kod yazmak mümkündür. Generators, JavaScript'te kullanılan önemli bir özelliktir ve modern JavaScript projelerinde sıkça karşılaşılabilir.