DébutantNon commencé

Exercice 9.2 · 8 min · 0 tentative

Chaîner les Promises

🎯 Objectif

Apprends à enchaîner plusieurs opérations asynchrones avec .then().

📖 Contexte

Pourquoi chaîner ?

Souvent, les opérations asynchrones se font en séquence : la suivante dépend du résultat de la précédente.

Par exemple, pour charger et afficher un profil utilisateur :

  1. Récupérer les données (requête réseau)
  2. Transformer les données (formatage)
  3. Afficher le résultat

Comment ça marche ?

Chaque .then() retourne une nouvelle Promise, ce qui permet de les enchaîner :

etape1()
  .then(function(resultat1) {
    return etape2(resultat1)
  })
  .then(function(resultat2) {
    return etape3(resultat2)
  })
  .then(function(resultat3) {
    console.log("Fini :", resultat3)
  })

La règle d'or : toujours return

Si tu oublies le return, la chaîne se casse :

// ❌ Sans return : le .then() suivant reçoit undefined
.then(function(x) {
  etape2(x)  // Oubli du return !
})

// ✅ Avec return : la valeur est transmise
.then(function(x) {
  return etape2(x)
})

Un seul .catch() suffit

Le .catch() à la fin de la chaîne attrape toutes les erreurs, peu importe l'étape :

etape1()
  .then(etape2)
  .then(etape3)
  .catch(function(erreur) {
    // Attrape les erreurs de n'importe quelle étape
    console.log("Oups:", erreur.message)
  })

📝 Consigne

Les 3 fonctions (acheterIngredients, cuisiner, servir) sont déjà prêtes. Le premier .then() est fait.

  1. Ajoute un .then() qui appelle servir() avec le résultat
  2. Ajoute un .then() qui affiche le message final avec console.log
  3. Ajoute .catch() à la fin pour gérer les erreurs

Résultat attendu :

1. Ingrédients achetés pour : Pasta
2. Plat cuisiné : Pasta (ingrédients prêts)
3. Servi : Plat terminé !
Bon appétit !

Objectifs

  • Appeler servir dans un .then()
  • Afficher le message final avec .then()
  • Les 3 étapes s'affichent dans l'ordre
  • Le message final s'affiche
  • Gestion d'erreur avec .catch()

Lis bien les instructions et lance-toi !

Indices (0/3)

Indice 1 verrouillé
Indice 2 verrouillé
Indice 3 verrouillé