đŸ”„ Callback Hell : Comment avons-nous Ă©chappĂ© Ă  cette Ă©chelle ? đŸ˜”â€đŸ’«

đŸ”„ Callback Hell : Comment avons-nous Ă©chappĂ© Ă  cette Ă©chelle ? đŸ˜”â€đŸ’«

Bonjour, chers hĂ©ros JS 💖
Le sujet d’aujourd’hui est Callback Hell — ce problĂšme en JavaScript oĂč le code se dĂ©cale parfois vers la droite comme une pyramide et te fait pleurer.

Si tu as dĂ©jĂ  vu un code comme celui-ci et que tu as pensĂ© « Qu’est-ce qui se passe ?! », tu es au bon endroit 😏

doSomething(function(result) {
  doSomethingElse(result, function(newResult) {
    doAnotherThing(newResult, function(finalResult) {
      // et ainsi de suite...
    });
  });
});

Dans le monde JS, nous appelons cela la “Pyramide de la Doom”. Mais ne t’inquiĂšte pas, il y a une issue đŸ’Ș✹


đŸ€” Qu’est-ce qu’un Callback ?

Un callback est une fonction passĂ©e en argument Ă  une autre fonction et appelĂ©e aprĂšs l’exĂ©cution de la tĂąche principale.
Imagine que tu dis Ă  quelqu’un : « PrĂ©viens-moi quand ton travail est terminĂ© », et JS rĂ©pond : « Bien sĂ»r, je m’en occupe » 😏

Exemple 1 : Salutation simple

function greet(name, callback) {
  console.log(`Hello ${name}`);
  callback();
}

greet("Cansu", function() {
  console.log("Bienvenue dans le monde JS !");
});

Explication :

  • La fonction greet prend deux paramĂštres : name et callback
  • D’abord, elle affiche Hello Cansu
  • Ensuite, elle appelle le callback → affiche "Bienvenue dans le monde JS !"

Conclusion : Callback = le mĂ©canisme de JS pour “prĂ©viens-moi quand tu as fini” 😎


đŸ˜”â€đŸ’« Qu’est-ce que le Callback Hell ?

Mais quand les choses se compliquent
 JS nous offre le cauchemar de l’échelle.

login(user, function(userData) {
  getProfile(userData, function(profile) {
    getFriends(profile, function(friends) {
      getPosts(friends, function(posts) {
        displayPosts(posts);
      });
    });
  });
});

ProblĂšmes :

  • Le code se dĂ©cale vers la droite
  • Fonction dans fonction → illisible
  • Gestion des erreurs difficile
  • DĂ©bogage = cauchemar đŸ˜”â€đŸ’«

Astuce : C’est ce que nous appelons Callback Hell / Pyramide de la Doom 💀


💡 Comment Ă©chapper au Callback Hell

1ïžâƒŁ Fonctions sĂ©parĂ©es (Approche modulaire)

function showPosts(posts) {
  displayPosts(posts);
}

function fetchPosts(friends) {
  getPosts(friends, showPosts);
}

function fetchFriends(profile) {
  getFriends(profile, fetchPosts);
}

login(user, function(userData) {
  getProfile(userData, fetchFriends);
});

Avantages :

  • Le code se lit de haut en bas
  • Moins de dĂ©calage → plus propre
  • DĂ©bogage plus facile

Astuce : En faisant de chaque callback une fonction sĂ©parĂ©e, ton code devient lisible et rĂ©utilisable 😏


2ïžâƒŁ DĂ©couvre les Promises (HĂ©ros moderne JS ⚡)

Une Promise est JS qui te dit : “D’accord, je te prĂ©viendrai quand le travail sera terminĂ©â€ 💌

login(user)
  .then(userData => getProfile(userData))
  .then(profile => getFriends(profile))
  .then(friends => getPosts(friends))
  .then(posts => displayPosts(posts))
  .catch(err => console.error(err));

Avantages :

  • Le code se lit de haut en bas → plus naturel
  • .catch() gĂšre les erreurs en un seul endroit
  • Callback Hell = disparu 😎

Astuce : Chaque .then() peut retourner une nouvelle opĂ©ration, et JS attend → magie du chaining ✹


3ïžâƒŁ Async / Await – L’étape finale 🏁

Async/Await = la version magique des Promises, presque synchrone

async function showUserPosts(user) {
  try {
    const userData = await login(user);
    const profile = await getProfile(userData);
    const friends = await getFriends(profile);
    const posts = await getPosts(friends);
    displayPosts(posts);
  } catch (err) {
    console.error("Oups, une erreur est survenue :", err);
  }
}

Avantages :

  • Le code se lit presque comme du JS synchrone normal
  • try/catch permet une gestion propre des erreurs
  • Callback Hell ? Disparu 💅

Humour :
Utiliser Async/Await = flirter avec JS 💖
Pendant que tu te demandes “Quand est-ce que ça finit ?”, tu prends rĂ©ellement le contrĂŽle 😏


🧠 Astuces pratiques & Trucs inhabituels

  1. Faire de chaque callback une fonction sĂ©parĂ©e → lisibilitĂ© + rĂ©utilisabilitĂ©
  2. Promise.all() → exĂ©cuter plusieurs tĂąches async indĂ©pendantes en mĂȘme temps
  3. Gestion des erreurs → .catch() ou try/catch pour un contrĂŽle centralisĂ©
  4. Chaining .then() → Ă©viter les callbacks compliquĂ©s
  5. Async/Await → code presque synchrone

Exemple : Promise.all

const friends = getFriends(profile);
const posts = getPosts(friends);
const photos = getPhotos(friends);

Promise.all([friends, posts, photos])
  .then(results => {
    displayAll(results);
  })
  .catch(err => console.error(err));

Avantages :

  • ExĂ©cute 3 opĂ©rations indĂ©pendantes simultanĂ©ment
  • Code propre et rapide
  • Callback Hell ? Disparu ! 🚀

🎯 RĂ©sumĂ© : Callback Hell = Drame Ă©vitable

  • Écris des petites fonctions → la modularitĂ© est reine 👑
  • Utilise les Promises → magie du chaining ✹
  • Utilise Async/Await → JS propre, presque synchrone
  • Gestion des erreurs → contrĂŽle centralisĂ©

JS peut essayer de te faire peur avec les callbacks, mais rappelle-toi :
Chaque Ă©chelle a une sortie 🌿

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile ißaretlenmißlerdir