Maison > interface Web > js tutoriel > Quand et pourquoi devrions-nous combiner async/await avec .then() en JavaScript ?

Quand et pourquoi devrions-nous combiner async/await avec .then() en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-11-03 11:45:29
original
1078 Les gens l'ont consulté

When and Why Should We Combine async/await with .then() in JavaScript?

Combiner Async/Await et .then() avec Promise Conversions

En JavaScript, async/await est un mécanisme puissant pour gérer les opérations asynchrones . Cependant, il existe des situations dans lesquelles il peut être pratique de combiner async/await avec .then(), notamment lors de la conversion de promesses en fonctions asynchrones.

Considérez l'exemple suivant :

<code class="javascript">async apiCall(params) {
    var results = await this.anotherCall()
      .then(results => {
        //do any results transformations
        return results;
      })
      .catch(error => {
        //handle any errors here
      });
    return results;
  }</code>
Copier après la connexion

Ici , la méthode anotherCall() renvoie une promesse, qui est convertie en fonction asynchrone à l'aide de .then().catch(). Cela nous permet d'effectuer toutes les transformations ou gestion des erreurs nécessaires avant de renvoyer les résultats.

Certains développeurs préfèrent utiliser async/await avec .catch() au lieu de try/catch pour sa compacité. Par exemple :

<code class="javascript">async function asyncTask() {
  throw new Error('network')
}
async function main() {
  const result = await asyncTask().catch(error => console.error(error));
  console.log('result:', result)
}

main();</code>
Copier après la connexion

Dans cet exemple, la fonction asyncTask() renvoie une erreur, qui est détectée par la méthode .catch() dans l'appel d'attente. Cela empêche l'erreur de se propager et nous permet de la gérer gracieusement dans la fonction main().

Il est important de noter que la méthode .then() crée et renvoie une nouvelle promesse, même si la promesse d'origine est renvoyée. par anotherCall() déjà résolu. Ce comportement peut entraîner des effets secondaires inattendus, surtout si plusieurs promesses sont enchaînées à l'aide de .then().

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!

source:php.cn
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