Maison >interface Web >js tutoriel >Promesse.all()

Promesse.all()

DDD
DDDoriginal
2025-01-21 12:34:16572parcourir

Promesse.all()

Compréhension approfondie de JavaScriptPromesse.all()

Promesse.all() est une méthode puissante en JavaScript pour gérer plusieurs opérations asynchrones simultanément. Il reçoit un objet itérable (généralement un tableau) contenant plusieurs promesses et renvoie une seule promesse. Cette promesse unique ne sera résolue que si toutes les promesses d'entrée sont résolues avec succès ; si une promesse est rejetée, la promesse unique sera immédiatement rejetée. Ce guide explorera les fonctionnalités, la syntaxe, le comportement et des exemples pratiques de Promesse.all().

Grammaire

La syntaxe de

Promesse.all() est simple :

<code class="language-javascript">Promise.all(iterable);</code>
  • iterable : un tableau ou un autre objet itérable contenant des promesses ou des valeurs. Les valeurs non-promises seront traitées comme des promesses résolues.

Valeur de retour

Cette méthode renvoie une Promise avec le comportement suivant :

  • Si itérable est vide, il sera immédiatement analysé comme un tableau vide.
  • Si toutes les promesses de l'itérable ont réussi, résolvez un tableau contenant les valeurs réussies, en conservant leur ordre d'origine.
  • Si une promesse est rejetée, elle est immédiatement rejetée et la raison de la première promesse rejetée est renvoyée, ignorant les résultats de toutes les autres promesses.

Succès et échec

  1. Réussi : lorsque toutes les promesses ont été résolues avec succès, Promesse.all() renvoie un tableau de résultats dans le même ordre que les promesses d'entrée.
  2. Échec : Si une promesse est rejetée, Promesse.all() sera immédiatement rejetée et la raison du rejet de la promesse sera renvoyée.

Exemple pratique

Exemple 1 : Utilisation de base

Dans cet exemple, nous créons trois promesses qui se résolvent après différents délais d'attente :

<code class="language-javascript">const promise1 = new Promise((resolve) => setTimeout(() => resolve('One'), 1000));
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Two'), 2000));
const promise3 = new Promise((resolve) => setTimeout(() => resolve('Three'), 3000));

Promise.all([promise1, promise2, promise3])
  .then(values => console.log(values)) // 输出: ['One', 'Two', 'Three']
  .catch(error => console.error(error));</code>

Ici, Promesse.all() attend que les trois promesses soient résolues, puis enregistre leurs résultats sur la console sous forme de tableau.

Exemple 2 : Traitement de valeurs mixtes

Vous pouvez également mélanger valeurs résolues et Promesses :

<code class="language-javascript">const p1 = Promise.resolve(42);
const p2 = Promise.resolve('Hello');
const p3 = new Promise((resolve) => setTimeout(() => resolve('World'), 1000));

Promise.all([p1, p2, p3])
  .then(values => console.log(values)) // 输出: [42, 'Hello', 'World']
  .catch(error => console.error(error));</code>

Dans ce cas, p1 et p2 se résolvent immédiatement, tandis que p3 se résout après une seconde.

Exemple 3 : Gestion des échecs

Si l'une des Promesses est rejetée, Promesse.all() sera immédiatement rejetée :

<code class="language-javascript">const p1 = Promise.resolve(42);
const p2 = Promise.reject(new Error('Failed!'));
const p3 = new Promise((resolve) => setTimeout(() => resolve('This will not run'), 1000));

Promise.all([p1, p2, p3])
  .then(values => console.log(values))
  .catch(error => console.error(error.message)); // 输出: 'Failed!'</code>

Ici, parce que p2 est rejeté, toute l'opération échoue et un message d'erreur est enregistré.

Scénarios d'application de

Promesse.all()

  • Obtenir plusieurs ressources : lorsque vous devez obtenir des données de plusieurs API en même temps et attendre avant de traiter toutes les réponses.
  • Traitement parallèle : Lorsque plusieurs tâches indépendantes sont exécutées simultanément et que leurs résultats doivent être combinés.
  • Opérations par lots : lors de l'exécution de mises à jour ou de calculs par lots où chaque opération peut être effectuée indépendamment.

Conclusion

Promesse.all() est un outil essentiel pour gérer plusieurs opérations asynchrones en JavaScript. Il simplifie le code en permettant aux développeurs d'attendre la résolution de plusieurs promesses avant de continuer avec une autre logique. Cependant, il est crucial de gérer correctement les échecs, car l’échec d’une promesse entraînera l’échec de l’ensemble de l’opération. Comprendre comment utiliser Promesse.all() efficacement vous permet d'écrire du code asynchrone plus propre et plus efficace.

Références : [1] https://www.php.cn/link/ebd58b8a3f1d72f4206201da62fb1204 [2] https://www.php.cn/link/9181a74736d3b86345dadbc90e29390e [3] https://www.php.cn/link/2a3e953a5e3d81e67945bce5519f84c8 [4] https://www.php.cn/link/4c0303ffb193bd5e66078909a15268aa [5] https://www.php.cn/link/9c25dc28b94e5226f1983330dc421cec [6] https://www.php.cn/link/b2f1384b8feb04d2de9a85124dc64613 [7] https://www.php.cn/link/f1e1fd9e97f59379ed79bdf258d55042 [8] https://www.php.cn/link/9a5859b8f76280c97c0c185a19d17014 [9] https://www.php.cn/link/d3f010d6bc392b904f63ce5792891b71 [10] https://www.php.cn/link/4d419d5b4274ea8faaf4f37410b97bd6

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:sockets WebArticle suivant:sockets Web