JavaScript Academy · Les

Patronen voor opnieuw proberen en backoff

Probeer mislukte asynchrone taken enkele keren opnieuw met tussenpozen; voeg exponentiële backoff en een kleine jitter toe en stop na een duidelijk maximum

Les 3 van 38 stappen

Patronen voor opnieuw proberen en backoff is een gratis JavaScript Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject JavaScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus JavaScript Academy bevat in totaal 3 lessen.

Waarom opnieuw proberen?

Doel: kleine, gecontroleerde nieuwe pogingen toevoegen.

  • Eenvoudige lus voor nieuwe pogingen
  • Exponentiële wachttijd
  • Kleine willekeurige variatie
  • Duidelijk maximumaantal pogingen
Patronen voor opnieuw proberen en backoff — illustratie 1

Hulpfunctie voor vertraging

Je hebt een kleine vertraging nodig om tussen pogingen te pauzeren.

// 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();
Patronen voor opnieuw proberen en backoff — illustratie 2

Onbetrouwbaar werk nabootsen

Met deze nagebouwde taak kun je nieuwe pogingen oefenen zonder echte netwerkaanroepen.

// 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); });
Patronen voor opnieuw proberen en backoff — illustratie 3

Vaste lus voor nieuwe pogingen

Vast interval: wacht tussen pogingen steeds even lang en stop na het maximumaantal pogingen.

// 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);
})();
Patronen voor opnieuw proberen en backoff — illustratie 4

Exponentiële wachttijd

Wachttijd: verleng het wachten bij elke poging en voeg een kleine willekeurige variatie toe om pieken te voorkomen.

// 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);
})();
Patronen voor opnieuw proberen en backoff — illustratie 5

Tips voor nieuwe pogingen

Tips:

  • Probeer alleen opnieuw bij tijdelijke fouten (time-outs, snelheidslimieten).
  • Probeer niet opnieuw bij ongeldige invoer.
  • Houd het aantal pogingen klein (3–5) en leg fouten kort vast in de log.
Patronen voor opnieuw proberen en backoff — illustratie 6

Quiz over nieuwe pogingen en wachttijd

Korte controle: de basis van wachttijden.

Patronen voor opnieuw proberen en backoff — illustratie 7

Samenvatting

Samenvatting: Je hebt een vaste lus voor nieuwe pogingen gebouwd, een exponentiële wachttijd met een kleine willekeurige variatie toegevoegd en een maximumaantal pogingen ingesteld om apps responsief te houden.

Patronen voor opnieuw proberen en backoff — illustratie 8
Gratis beginnen

Leer JavaScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
59
Lessen
200

Veelgestelde vragen

Is de les “Patronen voor opnieuw proberen en backoff” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad JavaScript Academy, waaronder “Patronen voor opnieuw proberen en backoff”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus JavaScript Academy bevat in totaal 3 lessen.

Wat leer ik in “Patronen voor opnieuw proberen en backoff”?

Probeer mislukte asynchrone taken enkele keren opnieuw met tussenpozen; voeg exponentiële backoff en een kleine jitter toe en stop na een duidelijk maximum Je oefent met JavaScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met JavaScript Academy te beginnen?

Ervaring vooraf is niet nodig. JavaScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.

Hoe lang duurt de les “Patronen voor opnieuw proberen en backoff”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over JavaScript Academy?

Ja. Elke les over JavaScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Async-functies schrijven; try/catch; parallel versus sequentieel
  2. Time-outs en afbreken met AbortController
  3. Patronen voor opnieuw proberen en backoff
← Terug naar JavaScript Academy