Fonction

Afin de présenter d'autres possibilités des promesses, nous allons créer une fonction qui génère une promesse avec retard.

1
const delay = (duration) =>
2
    new Promise((resolve, reject) => {
3
      setTimeout(() => resolve(`Ok en ${duration} seconde(s)`), duration * 1000);
4
    });

delay est une fonction qui retourne une promesse après duration secondes.

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

Le texte s'affiche après 2 secondes.

ExempleLancement de plusieurs promesses en parallèle.

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

On peut voir que la promesse 3 est retournée avant la promesse 2.

ExempleLancement de plusieurs promesses consécutives.

Étant donné qu'une promesse retourne une promesse, on peut chaîner les then.

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

On peut voir que les promesses sont exécutées les unes à la suite des autres.