Schemi di ritentativo e backoff
Ripeti alcune volte le operazioni asincrone non riuscite, con intervalli di attesa; aggiungi backoff esponenziale e un leggero jitter; interrompi i tentativi dopo un limite massimo definito.
Schemi di ritentativo e backoff è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.
Perché ritentare?
Obiettivo: aggiungere pochi tentativi controllati.
- Semplice ciclo di retry
- Backoff esponenziale
- Un piccolo jitter
- Numero massimo di tentativi chiaro

Helper delay
Le serve un piccolo helper delay per mettere in pausa l'esecuzione tra un tentativo e l'altro.
// 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();

Simulare un lavoro instabile
Questo task simulato permette di esercitarsi con i retry senza effettuare vere chiamate di rete.
// 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); });

Ciclo di retry fisso
Intervallo fisso: attenda lo stesso tempo tra un tentativo e l'altro; si fermi dopo il numero massimo di tentativi.
// 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);
})();

Backoff esponenziale
Backoff: aumenti l'attesa a ogni tentativo; aggiunga un piccolo jitter per evitare picchi.
// 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);
})();

Suggerimenti sui retry
Suggerimenti:
- Ritenti solo in caso di errori temporanei (timeout, limiti di frequenza).
- Non ritenti in caso di dati di input errati.
- Mantenga pochi tentativi (3–5) e registri brevemente gli errori.

Quiz su retry e backoff
Verifica rapida: basi del backoff.

Riepilogo
Riepilogo: ha realizzato un ciclo di retry fisso, ha aggiunto un backoff esponenziale con un piccolo jitter e ha impostato un numero massimo di tentativi per mantenere reattive le app.

Domande Frequenti
La lezione «Schemi di ritentativo e backoff» è gratuita?
Sì — il testo completo di «Schemi di ritentativo e backoff» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa imparerò in «Schemi di ritentativo e backoff»?
Ripeti alcune volte le operazioni asincrone non riuscite, con intervalli di attesa; aggiungi backoff esponenziale e un leggero jitter; interrompi i tentativi dopo un limite massimo definito. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.
Quanto tempo richiede la lezione «Schemi di ritentativo e backoff»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Scrivere funzioni async; try/catch; parallelo e sequenziale
- Timeout e annullamento con AbortController
- Schemi di ritentativo e backoff