Maison >interface Web >js tutoriel >Comment puis-je exécuter plusieurs fonctions JavaScript asynchrones simultanément ?

Comment puis-je exécuter plusieurs fonctions JavaScript asynchrones simultanément ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 07:14:02856parcourir

How Can I Execute Multiple Async JavaScript Functions Concurrently?

Exécuter simultanément des fonctions asynchrones en JavaScript

En JavaScript, attendre plusieurs fonctions asynchrones peut donner l'impression qu'elles s'exécutent séquentiellement plutôt que simultanément. Cela soulève la question : comment pouvons-nous réaliser une exécution parallèle de ces fonctions ?

Utiliser Promise.all() pour le parallélisme

Pour exécuter des fonctions asynchrones en parallèle, vous pouvez utiliser Promise.all( ) fonction. Il prend un tableau de promesses comme argument et renvoie une seule promesse qui se résout lorsque toutes les promesses du tableau sont résolues.

await Promise.all([someCall(), anotherCall()]);

Dans ce code, someCall() et anotherCall() sont appelés simultanément, et le script ne se poursuit que lorsque les deux fonctions ont fini de s'exécuter.

Stockage des résultats

Si vous souhaitez accéder aux résultats de l'async parallèle appels, vous pouvez déstructurer le tableau renvoyé par Promise.all() :

let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]);

Attention : Fail-Fast Behavior

Il est important de noter que Promise.all() suit un "fail -approche "rapide". Si l'une des promesses du tableau est rejetée, la promesse entière Promise.all() sera rejetée avec l'erreur de la première promesse échouée :

// If any of the promises fails, it will reject
Promise.all([happy('happy', 100), sad('sad', 50)]).then(console.log).catch(console.log);

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