La méthode Promise.all(itérable)
renvoie une promesse (promise) qui est résolue/tenue lorsque toutes les promesses de l'itérable ont été résolues/tenues.
Syntaxe
Promise.all(itérable);
Paramètres
Valeur de retour
Un objet Promise
qui est résolu lorsque toutes les promesses contenues dans l'itérable ont été résolues. La promesse est rompue dès qu'une des promesses de l'itérable est rompue.
Description
La valeur passée en paramètre est un tableau comportant les valeurs de chacune des promesses. Si un des éléments de l'itérable n'est pas une promesse, il est converti en une promesse grâce à Promise.resolve
. Si une des promesses de l'itérable est rejetée (n'est pas tenue), la promesse all
est rejetée immédiatement avec la valeur rejetée par la promesse en question, ne tenant pas compte des autres promesses (qu'elles soient ou non résolues). Si c'est un tableau vide qui est passé comme argument, la méthode résoudra la promesse immédiatement.
Exemples
Utiliser Promise.all()
Promise.all()
attend la résolution de l'ensemble des promesses (ou le rejet de la première promesse).
var p1 = Promise.resolve(3); var p2 = 1337; var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 100, "toto"); }); Promise.all([p1, p2, p3]).then((values) => { console.log(values); // [3, 1337, "toto"] });
Échec « rapide » de Promise.all()
La promesse de Promise.all
est rompue/rejetée immédiatement lorsqu'une des promesses qui la compose échoue. Si, par exemple, on a quatre promesses qui sont résolues après un certain temps et une cinquième qui échoue immédiatement, celle créée avec Promise.all()
échouera immédiatement :
var p1 = new Promise((resolve, reject) => { setTimeout(resolve, 1000, "un"); }); var p2 = new Promise((resolve, reject) => { setTimeout(resolve, 2000, "deux"); }); var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 3000, "trois"); }); var p4 = new Promise((resolve, reject) => { setTimeout(resolve, 4000, "quatre"); }); var p5 = new Promise((resolve, reject) => { reject("rejet"); }); Promise.all([p1, p2, p3, p4, p5]).then((valeur) => { console.log(valeur); }, (raison) => { console.log(raison) }); // message affiché dans la console : "rejet"
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Promise.all' dans cette spécification. |
Standard | Définition initiale au sein d'un standard ECMA. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Promise.all' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Pour contribuer à ces données de compatibilité, vous pouvez envoyer une poule requête sur : https://github.com/mdn/browser-compat-data/blob/master/javascript/promise.json.
Fonctionnalité | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Servo |
---|---|---|---|---|---|---|---|
Support simple | 32.0 | (Oui) | 29.0 | Aucun support | 19 | 7.1 | Aucun support |
Fonctionnalité | Android | Chrome for Android | Edge Mobile | Firefox for Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Support simple | 4.4.4 | 32.0 | (Oui) | 29 | Aucun support | (Oui) | 8.0 |