Mønstre for nye forsøk og backoff
Prøv mislykket asynkront arbeid på nytt noen ganger med forsinkelser; legg til eksponentiell backoff og litt jitter; stopp etter et tydelig maksimum.
Mønstre for nye forsøk og backoff er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 3 av 3. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 3 leksjoner.
Hvorfor prøve på nytt?
Mål: Legg til små, kontrollerte nye forsøk.
- Enkel løkke for nye forsøk
- Eksponentiell backoff
- Litt jitter
- Tydelig maksimalt antall forsøk

Hjelpefunksjon for forsinkelse
De trenger en liten hjelpefunksjon for forsinkelse for å vente mellom forsøkene.
// 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();

Simuler ustabilt arbeid
Denne simulerte oppgaven lar oss øve på nye forsøk uten ekte nettverkskall.
// 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); });

Fast løkke for nye forsøk
Fast intervall: vent like lenge mellom forsøkene, og stopp etter maksimalt antall forsøk.
// 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);
})();

Eksponentiell backoff
Backoff: øk ventetiden for hvert forsøk, og legg til litt jitter for å unngå topper.
// 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 for nye forsøk
Tips:
- Prøv bare på nytt ved midlertidige feil (tidsavbrudd, hastighetsbegrensninger).
- Ikke prøv på nytt ved ugyldige inndata.
- Hold antallet forsøk lavt (3–5), og logg feil kort.

Quiz om nye forsøk og backoff
Kort sjekk: Grunnleggende backoff.

Oppsummering
Oppsummering: De laget en fast løkke for nye forsøk, la til eksponentiell backoff med litt jitter og angav et maksimalt antall forsøk for å holde appene responsive.

Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 59
- Leksjoner
- 200
Ofte stilte spørsmål
Er leksjonen «Mønstre for nye forsøk og backoff» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Mønstre for nye forsøk og backoff», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 3 leksjoner.
Hva lærer jeg i «Mønstre for nye forsøk og backoff»?
Prøv mislykket asynkront arbeid på nytt noen ganger med forsinkelser; legg til eksponentiell backoff og litt jitter; stopp etter et tydelig maksimum. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med JavaScript Academy?
Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.
Hvor lang tid tar leksjonen «Mønstre for nye forsøk og backoff»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?
Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Skrive async-funksjoner; try/catch; parallelt kontra sekvensielt
- Tidsavbrudd og avbryting med AbortController
- Mønstre for nye forsøk og backoff