Maison > interface Web > js tutoriel > Différence entre l'utilisation d'async/wait et de promesses ?

Différence entre l'utilisation d'async/wait et de promesses ?

Susan Sarandon
Libérer: 2025-01-27 14:32:09
original
617 Les gens l'ont consulté

Opérations asynchrones JavaScript : explication détaillée de Promise et async/await

Promise et async/await sont deux façons pour JavaScript de gérer les opérations asynchrones. Cet article expliquera leurs différences, leurs avantages et les scénarios applicables.

Promesse

  1. Définition : Un objet Promise représente l'achèvement (ou l'échec) éventuel d'une opération asynchrone et sa valeur de résultat.
  2. Grammaire :
const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("数据已获取");
    }, 1000);
  });
};

fetchData()
  .then((data) => console.log(data))
  .catch((error) => console.error(error));
Copier après la connexion
  1. Principales caractéristiques :
  • Utilisez .then() pour gérer les résultats réussis.
  • Utilisez .catch() pour gérer les erreurs.
  • Vous pouvez utiliser .then() pour appeler en chaîne plusieurs opérations asynchrones.
  1. Avantages :
  • Mieux que l'enfer des rappels (.then()Les appels enchaînés sont plus propres que les rappels imbriqués).
  • Utilisez .catch() pour la gestion explicite des erreurs.
  1. Défi :
  • Lorsqu'il s'agit de nombreuses promesses, les appels enchaînés peuvent toujours être difficiles à lire (appelés "Promise Hell").
  • Lors de l'enchaînement de plusieurs .then() appels, la gestion des erreurs peut nécessiter une attention particulière.

Async/Attendre

  1. Définition : async/await est un sucre syntaxique construit sur Promise, donnant au code asynchrone l'apparence et l'exécution d'un code synchrone.
  2. Grammaire :
const fetchData = async () => {
  try {
    const data = await new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("数据已获取");
      }, 1000);
    });
    console.log(data);
  } catch (error) {
    console.error(error);
  }
};

fetchData();
Copier après la connexion
  1. Principales caractéristiques :
  • Utilisez le mot-clé async pour déclarer une fonction qui renvoie une promesse.
  • Utilisez await pour suspendre l'exécution jusqu'à ce que la promesse soit terminée.
  • Utilisez try...catch pour gérer les erreurs.
  1. Avantages :
  • Lisibilité du code : par rapport aux .then() appels en chaîne, la syntaxe est plus claire et plus facile à comprendre.
  • Plus facile à déboguer : les outils de débogage vous permettent de parcourir le code asynchrone/en attente, tout comme le code synchrone.
  • try...catch est utilisé pour la gestion centralisée des erreurs.
  1. Défi :
  • doit être utilisé dans une fonction déclarée avec async.
  • Peut parfois conduire à un comportement bloquant s'il n'est pas géré correctement dans des boucles ou des appels asynchrones séquentiels.

Difference of using async / await vs promises?


Quand utiliser

Promesse :

  • Pour des opérations asynchrones simples et ponctuelles.
  • Lors de l'utilisation d'une bibliothèque ou d'une API conçue autour de Promises.
  • Lorsque plusieurs opérations non liées sont appelées dans une chaîne.

Async/Attendre :

  • Pour les flux de travail complexes avec plusieurs opérations asynchrones dépendantes.
  • Lorsqu'un code plus clair et plus lisible est nécessaire.
  • Lorsque le débogage est critique.

Utiliser en combinaison

Async/await peut être combiné avec Promise pour des cas d'utilisation avancés :

const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve("数据已获取"), 1000);
  });
};

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

processData();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal