All, Any, AllSettled

Pour simplifier le code, le constructeur Promise dispose de différentes méthodes qui permettent de lancer plusieurs méthodes en parallèle ou en séries.

MéthodeAll

La méthode all permet de lancer plusieurs promesses en parallèle.

La réponse est retournée lorsque toutes les promesses sont résolues.

La réponse est un tableau des réponses résolues de chaque promesse dans leur ordre d'écriture.

En cas d'échec d'une des promesses, seule la raison de l'échec est retournée.

1
const delay = (duration) =>
2
    new Promise((resolve, reject) => {
3
      setTimeout(() => resolve(`${duration} seconde(s)`), duration * 1000);
4
    });
5
6
Promise.all([delay(4), delay(2), delay(3)])
7
    .then((response) => console.log(response));
8
9
console.log("Exemple de Promesse");
10

MéthodeAny

La méthode any permet de lancer plusieurs promesses en parallèle.

Seule la réponse résolue de la plus rapide est retournée. Elle ne tient pas compte des échecs.

1
const delay = (duration) =>
2
    new Promise((resolve, reject) => {
3
      setTimeout(() => resolve(`${duration} seconde(s)`), duration * 1000);
4
    });
5
6
Promise.any([delay(4), delay(2), delay(3)])
7
    .then((response) => console.log(response));
8
9
console.log("Exemple de Promesse");
10

MéthodeRace

La méthode race permet de lancer plusieurs promesses en parallèle.

Seule la réponse résolue ou d'échec de la plus rapide est retournée.

1
const delay = (duration) =>
2
    new Promise((resolve, reject) => {
3
      if(duration > 10) reject('erreur');
4
      setTimeout(() => resolve(`${duration} seconde(s)`), duration * 1000);
5
    });
6
7
Promise.race([delay(4), delay(2), delay(11)])
8
    .then((response) => console.log(response))
9
    .catch((e) => console.error(e));
10
11
console.log("Exemple de Promesse");
12

MéthodeAllSettled

La méthode allSettled permet de lancer plusieurs promesses en parallèle.

La réponse est retournée lorsque toutes les promesses sont résolues ou rejetées.

La réponse est un tableau d'objets contenant le statut et la valeur ou la raison de chaque promesse.

Dans le cas d'un resolve : status = "fulfilled" value = response de la promesse

Dans le cas d'un reject : status = "rejected" reason = erreur du reject

1
const delay = (duration) =>
2
    new Promise((resolve, reject) => {
3
        if(duration > 10) reject(`erreur ${duration} trop grand`);
4
        setTimeout(() => resolve(`${duration} seconde(s)`), duration * 1000);
5
    });
6
7
Promise.allSettled ([delay(4), delay(11), delay(3)])
8
    .then((response) => console.log(response))
9
    .catch((e) => console.error(e));
10
11
console.log("Exemple de Promesse");
12

(3) [{...}, {...}, {...}]

0: {status: "fulfilled", value: "4 seconde(s)"}

1: {status: "rejected", reason: "erreur 11 trop grand"}

2: {status: "fulfilled", value: "3 seconde(s)"}