Les callbacks, ça devient vite l'enfer ("Callback Hell") quand on les imbrique. JS a inventé les Promises. C'est un objet qui représente une valeur qui n'est pas encore là, mais qui arrivera (peut-être) dans le futur.
Une promesse a 3 états :
- Pending (En cours)
- Resolved (Succès) -> Appelle
.then() - Rejected (Erreur) -> Appelle
.catch()
const maPromesse = new Promise((resolve, reject) => {
// Faisons un truc long...
setTimeout(() => {
const success = true;
if (success) resolve("Ça a marché !");
else reject("Oups...");
}, 1000);
});
// Consommer la promesse
maPromesse
.then(resultat => {
console.log(resultat); // "Ça a marché !"
return "Autre chose"; // On peut enchaîner
})
.then(suite => console.log(suite))
.catch(erreur => console.error(erreur));