Retourner à la page d'accueil de TJS

Objet : Promise

Constructeur d'une Promise ou promesse d'existence future d'une valeur

Syntaxe
Promise promesse=new Promise(Function execute)

Attention, incompatible avec Internet Explorer
ES6
ECMAScript 2015

Description
Un objet Promise est un moyen permanent d'accéder à une valeur qui peut être dans différents états :
- valeur déjà accessible
- valeur qui sera éventuellement disponible plus tard
- valeur qui ne le sera jamais

Il faut comprendre le mot Promise comme une "promesse d'existence".

Les Promise sont le moyen idéal de manipuler des traitements issus d'appels asynchrones.
Les cas d'usages d'appels asynchrones sont nombreux :
- appel vers un service externe (via XMLHttpRequest par exemple)
- attente d'une action de l'utilisateur
- attente d'une réponse de l'appareil de l'utilisateur (position GPS, état batterie, ...)
- optimisation de la fluidité du code (pour le confort utilisateur, via WebWorker, pour l'optimisation SEO, ...)

La fonction execute() est exécutée immédiatement à la création de promesse.
Cette fonction attend deux paramètres, qui sont deux fonctions prédéfinies par le moteur JavaScript. Il ne faut donc pas les définir dans votre code source, mais les appeler dans la fonction execute() :
resolve(valeur) à exécuter pour signaler que la promesse est tenue
reject(raison) à exécuter pour signaler que la promesse a échoué

Pour résumer, la fonction execute() :
- déclenche un traitement (généralement non instantané ou non garanti)
- appelle resolve() ou reject() pour changer l'état de promesse.

Depuis ES7, les Promise sont également utilisables avec les opérateurs await et async.


Méthodes
catch()
ES6
Déclenche un traitement quand la promesse est rompue
finally()
ES9
Exécute un traitement dès qu'une promesse est terminée, qu'elle soit tenue ou rejetée
then()
ES6
Déclenche des traitements quand la promesse est tenue ou rompue

Exemple 1 : Promesse toujours tenue
Code source
<script type="text/javascript">
var promesse=new Promise(function(resolve, reject) {
 setTimeout( () => resolve("Yeepee") , 1000);
});

/* S'exécute quand la promesse est tenue */
promesse.then(function(value) {
 console.log(value);
});

console.log("Attente de la promesse");
console.log(promesse);
</script>

Résultat
Emulation de la console
Explication
Dans cet exemple, nous créons une promesse toujours tenue après un delai de 1000 ms fixé via setTimeout().
Page mise à jour le

Mon nouveau livre Tout JavaScript chez Dunod

Tout JavaScript le livre chez DunodEn savoir plus
Sortie le 14 novembre 2019

Version papier à 29€90
Format électronique à 22€99.

Commandez en ligne

Chercher une fonction, un objet, ...

Le 12/08/2020 18:17:56 sur php7 en 29.9 ms