Les états d'une promesse en JavaScript
Une promesse peut se trouver dans l'un des trois états. Lors de sa création, la promesse est en attente (pending), puis peut devenir tenue (fulfilled), en retournant le résultat obtenu, ou rejetée (rejected), en retournant la raison de l'échec. Vous pouvez observer la transition d'un état à un autre en exécutant le code suivant :
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // mettez soit true, soit false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // toutes les secondes, nous affichons la promesse dans la console
}, 1000);
Notez que les états fulfilled et rejected sont immuables : si une promesse est passée à l'un de ces états, elle ne pourra plus passer à l'autre. Regardons un exemple. Dans le code suivant, l'appel à reject se produira plus tôt, donc l'appel à resolve sera ignoré :
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Créez une promesse qui s'exécutera avec succès après un certain temps. Affichez-la dans la console et étudiez son état initial et son état final.
Créez une promesse qui échouera après un certain temps. Affichez-la dans la console et étudiez son état initial et son état final.