Mönster för omförsök och backoff
Försök om misslyckade asynkrona uppgifter några gånger med fördröjningar; lägg till exponentiell backoff och lite jitter; stoppa efter ett tydligt maxantal.
Mönster för omförsök och backoff är en gratis lektion i JavaScript Academy på CoddyKit. Detta är lektion 3 av 3. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för JavaScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i JavaScript Academy innehåller totalt 3 lektioner.
Varför försöka igen?
Mål: Lägg till små, kontrollerade återförsök.
- Enkel loop för återförsök
- Exponentiell backoff
- Lite jitter
- Tydligt maximalt antal försök

Hjälpfunktion för fördröjning
Ni behöver en liten hjälpfunktion för fördröjning som pausar mellan försöken.
// 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();

Simulera instabilt arbete
Den här simulerade uppgiften gör det möjligt att öva på återförsök utan riktiga nätverksanrop.
// 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); });

Loop för fasta återförsök
Fast intervall: vänta lika länge mellan försöken och sluta efter maximalt antal försö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);
})();

Exponentiell backoff
Backoff: öka väntetiden vid varje försök och lägg till lite jitter för att undvika toppar.
// 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 för återförsök
Tips:
- Gör bara nya försök vid tillfälliga fel (timeouts, rate limits).
- Gör inte nya försök vid felaktiga indata.
- Håll antalet försök lågt (3–5) och logga fel kortfattat.

Quiz om återförsök och backoff
Snabb kontroll: Grunderna i backoff.

Sammanfattning
Sammanfattning: Ni byggde en loop för fasta återförsök, lade till exponentiell backoff med lite jitter och angav ett maximalt antal försök för att hålla appar responsiva.

Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 59
- Lektioner
- 200
Vanliga frågor
Är lektionen ”Mönster för omförsök och backoff” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen JavaScript Academy, inklusive ”Mönster för omförsök och backoff”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i JavaScript Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Mönster för omförsök och backoff”?
Försök om misslyckade asynkrona uppgifter några gånger med fördröjningar; lägg till exponentiell backoff och lite jitter; stoppa efter ett tydligt maxantal. Ni övar på JavaScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig JavaScript Academy?
Du behöver inga förkunskaper. Utbildningen i JavaScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.
Hur lång tid tar lektionen ”Mönster för omförsök och backoff”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här JavaScript Academy-lektionen?
Ja. Varje JavaScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skriva async-funktioner; try/catch; parallellt kontra sekventiellt
- Tidsgränser och avbrytning med AbortController
- Mönster för omförsök och backoff