Promise.all()

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

itérable
Un objet itérable comme un Array. Voir la page itérable.

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

Fonctionnalité Chrome Edge Firefox Internet Explorer Opera Safari Servo
Support simple32.0(Oui)29.0Aucun support197.1Aucun support
Fonctionnalité Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
Support simple4.4.432.0(Oui)29Aucun support(Oui)8.0

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, HlodowigRaginwald, mehdichamouma, Kerumen
 Dernière mise à jour par : SphinxKnight,