0Pricing
JavaScript Academy · Pelajaran

Pola Percobaan Ulang dan Backoff

Coba ulang pekerjaan async yang gagal beberapa kali dengan jeda; tambahkan backoff eksponensial dan sedikit jitter; berhenti setelah batas maksimum yang jelas

Pola Percobaan Ulang dan Backoff adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 3 pelajaran total.

Mengapa melakukan percobaan ulang?

Tujuan: Menambahkan percobaan ulang kecil yang terkendali.

  • Perulangan percobaan ulang sederhana
  • Penundaan eksponensial
  • Variasi acak kecil
  • Jumlah percobaan maksimum yang jelas
Pola Percobaan Ulang dan Backoff — ilustrasi 1

Pembantu penundaan

Anda memerlukan pembantu penundaan kecil untuk menjeda di antara percobaan.

// 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();
Pola Percobaan Ulang dan Backoff — ilustrasi 2

Menirukan pekerjaan yang tidak stabil

Tugas tiruan ini memungkinkan Anda berlatih melakukan percobaan ulang tanpa panggilan jaringan sungguhan.

// 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); });
Pola Percobaan Ulang dan Backoff — ilustrasi 3

Perulangan percobaan ulang tetap

Interval tetap: tunggu selama waktu yang sama di antara percobaan; berhenti setelah jumlah percobaan maksimum.

// 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);
})();
Pola Percobaan Ulang dan Backoff — ilustrasi 4

Penundaan eksponensial

Penundaan bertahap: tambah waktu tunggu pada setiap percobaan; tambahkan sedikit variasi acak untuk menghindari lonjakan.

// 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);
})();
Pola Percobaan Ulang dan Backoff — ilustrasi 5

Kiat percobaan ulang

Kiat:

  • Lakukan percobaan ulang hanya untuk kesalahan sementara (batas waktu, batas laju).
  • Jangan melakukan percobaan ulang untuk masukan yang buruk.
  • Batasi jumlah percobaan (3–5) dan catat kegagalan secara singkat.
Pola Percobaan Ulang dan Backoff — ilustrasi 6

Kuis percobaan ulang/penundaan

Pemeriksaan singkat: Dasar-dasar penundaan.

Pola Percobaan Ulang dan Backoff — ilustrasi 7

Ringkasan

Ringkasan: Anda membuat perulangan percobaan ulang tetap, menambahkan penundaan eksponensial dengan sedikit variasi acak, dan menetapkan jumlah percobaan maksimum agar aplikasi tetap responsif.

Pola Percobaan Ulang dan Backoff — ilustrasi 8

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Percobaan Ulang dan Backoff” gratis?

Ya — teks lengkap “Pola Percobaan Ulang dan Backoff” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Pola Percobaan Ulang dan Backoff”?

Coba ulang pekerjaan async yang gagal beberapa kali dengan jeda; tambahkan backoff eksponensial dan sedikit jitter; berhenti setelah batas maksimum yang jelas Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Pola Percobaan Ulang dan Backoff” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menulis Fungsi async; try/catch; Paralel vs Berurutan
  2. Batas Waktu dan Pembatalan dengan AbortController
  3. Pola Percobaan Ulang dan Backoff
← Kembali ke JavaScript Academy