Maison >interface Web >js tutoriel >Comment puis-je exécuter des opérations asynchrones simultanément en JavaScript avec une gestion appropriée des erreurs ?

Comment puis-je exécuter des opérations asynchrones simultanément en JavaScript avec une gestion appropriée des erreurs ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 00:22:11250parcourir

How Can I Run Asynchronous Operations Concurrently in JavaScript with Proper Error Handling?

Exécution d'une opération d'attente simultanée

L'extrait de code en question rencontre un problème lors de l'exécution d'opérations asynchrones :

const value1 = wait getValue1Async();<br>const value2 = wait getValue2Async();<br>

Cette implémentation attend séquentiellement la fin de chaque opération avant de commencer la suivante. Pour permettre l'exécution simultanée, une approche modifiée est requise.

Décomposition des promesses et attente séparée

La première solution présentée tente de résoudre ce problème en obtenant les promesses pour chaque opération, puis en les attendant séparément :

<br>const p1 = getValue1Async();<br>const p2 = getValue2Async();<br>const value1 = wait p1;<br>const value2 = wait p2;<br>

Bien que cette méthode exécute les deux opérations en parallèle, elle ne gère pas rejet correctement si les deux promesses sont rejetées. Il attend également la fin de la première opération avant de démarrer la seconde, ce qui est inefficace.

Solution Promise.all

Pour résoudre ces problèmes, la fonction Promise.all peut être utilisée :

<br>const [value1, value2] = wait Promise.all([getValue1Async(), getValue2Async()]);<br>

Promise.all prend un tableau de promesses et renvoie une seule promesse qui se résout lorsque toutes les promesses d'entrée ont été résolues ou rejetées. Cette approche offre plusieurs avantages :

  • Concurrence :Les opérations seront exécutées simultanément sans attendre la fin de la première.
  • Traitement des rejets : Tout refus sera traité correctement et la promesse qui en résultera sera rejetée avec un message approprié. erreur.
  • Simplicité :La syntaxe est concise et lisible.

TL;DR

En résumé, pour effectuer des opérations asynchrones simultanées avec gestion appropriée des rejets, utilisez Promise.all :

<br>const [value1, value2] = wait Promise.all([getValue1Async(), getValue2Async()]);<br>

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