Modèles de nouvelle tentative et de temporisation progressive
Relancez quelques fois les opérations asynchrones qui échouent, avec des délais ; ajoutez une temporisation exponentielle et une petite variation aléatoire ; arrêtez-vous après un maximum clairement défini
Modèles de nouvelle tentative et de temporisation progressive est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 3 leçons au total.
Pourquoi effectuer des réessais ?
Objectif : Ajouter de petits réessais contrôlés.
- Boucle de réessai simple
- Temporisation progressive exponentielle
- Petite variation aléatoire
- Nombre maximal de tentatives clairement défini

Fonction auxiliaire de délai
Vous avez besoin d’une petite fonction auxiliaire de délai pour faire une pause entre les tentatives.
// 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 une tâche instable
Cette tâche simulée nous permet de nous entraîner aux réessais sans effectuer de véritables appels réseau.
// 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); });

Boucle de réessai à intervalle fixe
Intervalle fixe : attendre la même durée entre les tentatives et s’arrêter après le nombre maximal d’essais.
// 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);
})();

Temporisation progressive exponentielle
Temporisation progressive : augmenter l’attente à chaque tentative et ajouter une petite variation aléatoire pour éviter les pics.
// 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);
})();

Conseils pour les réessais
Conseils :
- Effectuez un réessai uniquement pour les erreurs temporaires (délais d’expiration, limites de débit).
- Ne relancez pas les opérations dont les données d’entrée sont incorrectes.
- Limitez le nombre de tentatives (3 à 5) et consignez brièvement les échecs.

Quiz sur les réessais et la temporisation progressive
Vérification rapide : notions de base de la temporisation progressive.

Récapitulatif
Récapitulatif : Vous avez créé une boucle de réessai à intervalle fixe, ajouté une temporisation progressive exponentielle avec une petite variation aléatoire et défini un nombre maximal de tentatives pour préserver la réactivité des applications.

Questions Fréquemment Posées
La leçon « Modèles de nouvelle tentative et de temporisation progressive » est-elle gratuite ?
Oui — le texte complet de « Modèles de nouvelle tentative et de temporisation progressive » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Modèles de nouvelle tentative et de temporisation progressive » ?
Relancez quelques fois les opérations asynchrones qui échouent, avec des délais ; ajoutez une temporisation exponentielle et une petite variation aléatoire ; arrêtez-vous après un maximum clairement… Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer JavaScript Academy ?
Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.
Combien de temps prend la leçon « Modèles de nouvelle tentative et de temporisation progressive » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?
Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Écrire des fonctions async ; try/catch ; exécution parallèle ou séquentielle
- Délais d’expiration et annulation avec AbortController
- Modèles de nouvelle tentative et de temporisation progressive