Préserver l'ordre dans Promise.all
Promise.all est une fonction JavaScript qui prend un itérable de promesses et renvoie une seule promesse qui résout une fois que toutes les promesses d'entrée ont été résolues. Il est souvent utilisé pour attendre la fin de plusieurs opérations asynchrones avant de continuer.
Une question courante se pose : l'ordre des valeurs résolues dans la promesse de sortie est-il garanti pour correspondre à l'ordre des promesses d'entrée ?
Selon la documentation MDN, il semble que les valeurs transmises au rappel then() de Promise.all soient présentées dans l'ordre des promesses. Cette question demande la confirmation de la spécification.
La spécification Promise.all (https://tc39.github.io/ecma262/#sec-promise.all) indique que :
En combinant ces points, il est clair que la sortie de Promise.all suivra toujours strictement l'ordre de l'itérable d'entrée. Cela signifie que si vous transmettez un tableau à Promise.all, les valeurs résolues apparaîtront dans le tableau de sortie dans le même ordre que dans le tableau d'entrée.
Pour démontrer cela, considérons l'exemple suivant :
<code class="javascript">const promises = [1, 2, 3, 4, 5].map(Promise.resolve); Promise.all(promises).then((results) => { console.log(results); // [1, 2, 3, 4, 5] });</code>
Dans ce cas, le résultat sera [1, 2, 3, 4, 5], quelle que soit la promesse résolue en premier.
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!