Maison  >  Article  >  interface Web  >  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
Mary-Kate Olsenoriginal
2024-11-03 11:45:291034parcourir

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>

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>

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!

Déclaration:
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
Article précédent:Chargeur JavaScriptArticle suivant:Chargeur JavaScript