0Pricing
JavaScript Academy · Ders

Yeniden Deneme ve Geri Çekilme Kalıpları

Başarısız eşzamansız çalışmayı gecikmelerle birkaç kez yeniden deneyin; üstel geri çekilme ve küçük bir titreşim ekleyin; belirgin bir üst sınıra ulaşınca durun.

Yeniden Deneme ve Geri Çekilme Kalıpları, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.

Neden yeniden deneme?

Amaç: Küçük ve kontrollü yeniden denemeler eklemek.

  • Basit yeniden deneme döngüsü
  • Üstel geri çekilme
  • Küçük bir dalgalanma
  • Net maksimum deneme sayısı
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 1

Gecikme yardımcısı

Denemeler arasında duraklamak için küçük bir gecikme yardımcısına ihtiyacınız var.

// delay: resolve after ms
function delay(ms) {
  return new Promise(function (resolve) {
    setTimeout(function () { resolve(); }, ms);
  });
}

async function demoDelay() {
  console.log("wait...");
  await delay(5);
  console.log("done");
}

demoDelay();
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 2

Kararsız çalışmayı taklit etme

Bu sahte görev, gerçek ağ çağrıları yapmadan yeniden denemeleri uygulamanızı sağlar.

// Unstable task: fails first N times, then succeeds
function makeUnstable(failCount, value) {
  let left = failCount;
  return async function run() {
    if (left > 0) {
      left = left - 1;
      throw new Error("temporary");
    }
    return value;
  };
}

const sometimes = makeUnstable(2, "OK");
sometimes().catch(function (e) { console.log("first:", e.message); });
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 3

Sabit yeniden deneme döngüsü

Sabit aralık: Denemeler arasında aynı süreyi bekleyin; maksimum deneme sayısına ulaştıktan sonra durun.

// Retry a few times with a fixed wait
async function retryFixed(fn, tries, waitMs) {
  let lastError = null;
  for (let i = 1; i <= tries; i++) {
    try {
      return await fn();
    } catch (e) {
      lastError = e;
      console.log("attempt", i, "failed:", e.message);
      if (i < tries) {
        await delay(waitMs);
      }
    }
  }
  throw lastError;
}

(async function () {
  const job = makeUnstable(2, "OK");
  const result = await retryFixed(job, 3, 5);
  console.log("fixed result:", result);
})();
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 4

Üstel geri çekilme

Geri çekilme: Her denemede bekleme süresini artırın; ani yük artışlarını önlemek için küçük bir dalgalanma ekleyin.

// Exponential backoff with a tiny jitter
function jitter(ms) {
  const wiggle = Math.floor(Math.random() * 3); // 0..2
  return ms + wiggle;
}

async function retryBackoff(fn, tries, baseMs) {
  let lastError = null;
  for (let i = 1; i <= tries; i++) {
    try {
      return await fn();
    } catch (e) {
      lastError = e;
      console.log("attempt", i, "failed:", e.message);
      if (i < tries) {
        const wait = jitter(baseMs * Math.pow(2, i - 1));
        await delay(wait);
      }
    }
  }
  throw lastError;
}

(async function () {
  const job = makeUnstable(2, "OK");
  const value = await retryBackoff(job, 4, 3);
  console.log("backoff result:", value);
})();
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 5

Yeniden deneme ipuçları

İpuçları:

  • Yalnızca geçici hatalarda yeniden deneyin (zaman aşımları, hız sınırları).
  • Girdiler geçersiz olduğunda yeniden denemeyin.
  • Deneme sayısını düşük tutun (3–5) ve hatalar için kısa bir log tutun.
Yeniden Deneme ve Geri Çekilme Kalıpları — resim 6

Yeniden deneme ve geri çekilme testi

Hızlı kontrol: Geri çekilmenin temelleri.

Yeniden Deneme ve Geri Çekilme Kalıpları — resim 7

Özet

Özet: Sabit bir yeniden deneme döngüsü oluşturdunuz, küçük bir dalgalanmayla birlikte üstel geri çekilme eklediniz ve uygulamaların yanıt vermeye devam etmesi için bir maksimum deneme sayısı belirlediniz.

Yeniden Deneme ve Geri Çekilme Kalıpları — resim 8

Sıkça Sorulan Sorular

“Yeniden Deneme ve Geri Çekilme Kalıpları” dersi ücretsiz mi?

Evet — “Yeniden Deneme ve Geri Çekilme Kalıpları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.

“Yeniden Deneme ve Geri Çekilme Kalıpları” dersinde ne öğreneceğim?

Başarısız eşzamansız çalışmayı gecikmelerle birkaç kez yeniden deneyin; üstel geri çekilme ve küçük bir titreşim ekleyin; belirgin bir üst sınıra ulaşınca durun. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Yeniden Deneme ve Geri Çekilme Kalıpları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. async işlevleri yazma; try/catch; paralel ve sıralı çalışma
  2. Zaman Aşımları ve AbortController ile İptal
  3. Yeniden Deneme ve Geri Çekilme Kalıpları
← JavaScript Academy Sayfasına Dön