Maison >interface Web >js tutoriel >Comment puis-je paralléliser les appels asynchrones en JavaScript à l'aide de « async/await » ?

Comment puis-je paralléliser les appels asynchrones en JavaScript à l'aide de « async/await » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 17:28:14328parcourir

How Can I Parallelize Asynchronous Calls in JavaScript using `async/await`?

Parallélisation des appels asynchrones avec wait

Lors de l'utilisation de la syntaxe async/await introduite dans ES7, il est essentiel de comprendre que plusieurs instructions wait s'exécuteront séquentiellement plutôt qu’en parallèle. Cela signifie qu'attendre un résultat dans un appel de fonction suspendra l'exécution jusqu'à la fin de l'appel précédent. Pour éviter cela, il existe plusieurs options.

L'une des méthodes les plus simples dans Node.js consiste à exploiter la fonction Promise.all(). Promise.all() vous permet de créer une seule promesse qui se résout lorsque toutes les promesses fournies sont résolues ou qui est rejetée lorsque l'une d'entre elles est rejetée. En transmettant un tableau de promesses à Promise.all(), vous pouvez vous assurer qu'elles s'exécutent toutes simultanément.

Voici un exemple :

const someCall = () => new Promise((resolve) => setTimeout(() => resolve("some value"), 100));
const anotherCall = () => new Promise((resolve) => setTimeout(() => resolve("another value"), 200));

await Promise.all([someCall(), anotherCall()])
  .then((results) => {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  });

Dans cet exemple, someCall() et anotherCall() s'exécutera en parallèle et les résultats seront disponibles dans le tableau des résultats.

Une approche alternative consiste à utiliser la bibliothèque async, qui fournit des fonctionnalités supplémentaires pour opérations asynchrones. La fonction async.parallel() vous permet de spécifier un tableau de fonctions à exécuter en parallèle et un rappel à appeler une fois toutes les fonctions terminées.

Voici un exemple utilisant async.parallel() :

const async = require("async");

const someCall = (callback) => setTimeout(() => callback(null, "some value"), 100);
const anotherCall = (callback) => setTimeout(() => callback(null, "another value"), 200);

async.parallel([someCall, anotherCall], (err, results) => {
  if (err) {
    // Handle any errors.
  } else {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  }
});

Promise.all() et async.parallel() offrent des méthodes fiables pour exécuter des fonctions asynchrones en parallèle. Choisissez l'approche qui correspond le mieux aux exigences et préférences de votre projet.

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