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).

  1. var, let ve const arasındaki fark nedir?KolayJavaScriptFrontend
  2. == ile === arasındaki fark nedir?KolayJavaScriptFrontend
  3. Closure nedir? Bir örnekle açıklayın.OrtaJavaScriptFrontend
  4. Aşağıdaki kodun çıktısı nedir? (Event loop)OrtaJavaScriptFrontend
  5. this anahtar kelimesi nasıl belirlenir? Arrow function'larda ne değişir?OrtaJavaScriptFrontend
  6. Bir debounce fonksiyonu yazın.ZorJavaScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle