Sobes.tech
Junior

Quelles méthodes connaissez-vous pour travailler avec du code asynchrone?

sobes.tech IA

Réponse de l'IA

  • Fonctions de rappel (callback) : Passer une fonction en argument à une autre fonction, qui sera appelée après la fin d'une opération asynchrone. Peut conduire à un "callback hell".
  • Promesses (Promises) : Objets représentant la finalisation (ou l'échec) d'une opération asynchrone et sa valeur résultante. Offrent une gestion plus structurée de l'asynchronie.
    // Exemple d'utilisation d'une promesse
    fetch('/api/data')
      .then(response => response.json()) // Traitement de la réponse réussie
      .then(data => console.log(data)) // Traitement des données reçues
      .catch(error => console.error('Erreur lors de la récupération des données:', error)); // Gestion de l'erreur
    
  • Async/await : Sucre syntaxique sur les promesses, permettant d'écrire du code asynchrone dans un style plus synchrone, ce qui le rend plus lisible et plus facile à déboguer.
    // Exemple d'utilisation d'async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Attente de la promesse
        if (!response.ok) {
          throw new Error(`Erreur HTTP! statut : ${response.status}`);
        }
        const data = await response.json(); // Attente de la promesse
        console.log(data);
      } catch (error) {
        console.error('Erreur lors de la récupération des données:', error); // Gestion de l'erreur
      }
    }
    fetchData();
    
  • Générateurs (Generators) : Peuvent être utilisés pour travailler avec l'asynchronie en combinaison avec la bibliothèque co ou manuellement, bien que async/await soit devenu une approche plus courante.

Comparaison des approches principales :

Méthode Avantages Inconvénients
Callbacks Simple au début "Callback hell", complexité dans la gestion des erreurs
Promesses Meilleure lisibilité, gestion des erreurs Peuvent devenir encombrantes dans des chaînes d'opérations
Async/await Haute lisibilité, ressemble au code synchrone Nécessite un support environnemental pour async/await