Sobes.tech
Junior

Quelle est la différence entre async/await et Promise?

sobes.tech IA

Réponse de l'IA

async/await est un sucre syntaxique au-dessus des promesses. Il permet d’écrire du code asynchrone de manière plus lisible et semblable à du code synchrone, en utilisant les mots-clés async pour les fonctions contenant await pour attendre la résolution d’une promesse. Les promesses sont des objets représentant la finalisation (ou l’échec) d’une opération asynchrone et sa valeur résultante.

Caractéristique async/await Promise
Syntaxe Plus proche du code synchrone. Utilise les méthodes .then(), .catch(), .finally().
Lisibilité Généralement plus élevée, surtout dans les chaînes. Peut conduire à du "Callback hell" dans des chaînes complexes.
Gestion des erreurs Utilise try...catch standard. Utilise .catch() ou le second argument dans .then().
Parallélisme Nécessite l’utilisation explicite de Promise.all() ou Promise.allSettled(). Peut être plus explicite, mais moins lisible sans async/await.
// Exemple avec Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Données reçues');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Exemple avec async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Données reçues');
    }, 1000);
  });
}

async function processData() {
  try {
    const data = await getDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

processData();