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

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();

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); });

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);
})();

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);
})();

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.

Quiz over nieuwe pogingen en wachttijd
Korte controle: de basis van wachttijden.

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.

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
- Async-functies schrijven; try/catch; parallel versus sequentieel
- Time-outs en afbreken met AbortController
- Patronen voor opnieuw proberen en backoff