Generator fonksiyonlar ve iterator protokolü nedir?
Cevap
Bir nesne [Symbol.iterator]() metodu ile { value, done } döndüren bir next() sağlıyorsa iterable'dır; for...of, spread ve destructuring bu protokolü kullanır.
Generator (function*) bu protokolü kolayca üretir: yield ile değer üretip durur, next() çağrılınca kaldığı yerden devam eder.
function* idUret(baslangic = 1) {
let id = baslangic;
while (true) yield id++;
}
const ids = idUret();
ids.next().value; // 1
ids.next().value; // 2
function* aralik(bas, son, adim = 1) {
for (let i = bas; i < son; i += adim) yield i;
}
[...aralik(0, 10, 3)]; // [0, 3, 6, 9]Kullanım alanları: tembel (lazy) diziler, sonsuz akışlar, sayfalı API'leri gezmek (async function* ile).
İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.