Sobes.tech
Junior

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

sobes.tech IA

Réponse de l'IA

Promise représente un objet qui reflète la finalisation ou le rejet d'une opération asynchrone. Il gère les flux asynchrones à l'aide de callbacks .then() et .catch().

async/await est un sucre syntaxique sur Promise, qui rend le code asynchrone plus lisible et semblable au synchrone. Une fonction marquée comme async retourne toujours une Promise. L'opérateur await ne peut être utilisé qu'à l'intérieur d'une fonction async et suspend l'exécution jusqu'à ce que la Promise soit résolue ou rejetée, renvoyant son résultat ou lançant une exception.

Aspect Promise Async/Await
Lisibilité Nécessite des chaînes .then() et .catch() Semblable au code synchrone, flux linéaire
Gestion des erreurs Utilise .catch() Utilise des blocs try...catch
Flux d'exécution Géré par des callbacks Suspend/reprend la fonction
Valeur retournée Promise Promise (pour la fonction async) ou résultat de Promise (pour await)
Dépendance Mécanisme autonome Basé sur Promise

Exemple avec Promise :

// Exemple avec Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Données reçues (Promise)");
    }, 1000);
  });
}

fetchDataPromise()
  .then(data => console.log(data))
  .catch(error => console.error(error));

Exemple avec async/await :

// Exemple avec async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Données reçues (async/await)");
    }, 1000);
  });
}

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

showData();