Maison > interface Web > js tutoriel > « Promise.all » préserve-t-il l'ordre des valeurs résolues ?

« Promise.all » préserve-t-il l'ordre des valeurs résolues ?

Barbara Streisand
Libérer: 2024-11-03 00:22:29
original
627 Les gens l'ont consulté

Does `Promise.all` Preserve the Order of Resolved Values?

Promise.all : Ordre des valeurs résolues

En JavaScript, Promise.all est conçu pour améliorer la fonctionnalité des promesses en permettant la résolution de plusieurs promesses simultanément. Un aspect clé de Promise.all est l'ordre dans lequel les valeurs résolues sont transmises à son rappel.

Selon la documentation MDN, l'ordre des valeurs résolues doit correspondre à l'ordre des promesses dans le tableau d'entrée. Cela signifie que la première promesse à résoudre verra sa valeur placée en premier dans le tableau de résultats transmis au rappel then().

Pour confirmer cela, examinons la spécification JavaScript Promise. Dans la section « Promise.all (iterable) », nous trouvons les étapes permettant de résoudre un itérable de promesses en une seule promesse. Le détail crucial réside dans l'étape 4e, qui consiste à créer un emplacement interne [[Index]] pour chaque promesse résolue. Cet emplacement marque explicitement l'index de la promesse dans le tableau d'entrée d'origine.

Par conséquent, l'implémentation Promise.all garantit que lors de la résolution simultanée de plusieurs promesses, la sortie est strictement ordonnée en fonction de l'ordre des promesses dans l'entrée. tableau. Cette préservation de l'ordre est vraie tant que le tableau d'entrée conserve un ordre cohérent (par exemple, un tableau).

Pour illustrer cela, considérons le code suivant :

<code class="js">const somePromises = [1, 2, 3, 4, 5].map(Promise.resolve);
Promise.all(somePromises).then(function(results) {
  console.log(results); // Expected result: [1, 2, 3, 4, 5]
});</code>
Copier après la connexion

Lorsque ce code est exécuté, les valeurs résolues seront enregistrées sur la console dans l'ordre des promesses dans le tableau somePromises. Cela démontre la fonctionnalité de préservation des commandes de Promise.all.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal