JS - Chapitre 14 - Promises Flashcards
Qu’est-ce qu’une promise?
C’est un objet contenant un future résultat
Quels sont les 3 états d’une promise
pending, fulfilled, rejected
Quelle est la séquence des états d’une promise
d’abord pending ensuite soit fulfilled soit rejected et c’est fini
Exemple de création d’une promise
function delay(interval) {
return new Promise(function(resolve) {
return setTimeout(resolve,interval);
}
}
delay(1000).then(()=>console.log(‘done’));
Quelles sont les 2 méthodes utilitaires d’une promise
Promise.resolve(value) : création d’une promise résolu
Promise.reject(error): création d’une promise rejeté
Mapping, FlatMapping et promise
le then agit comme un mapping: si on lui injecte une fonction de mapping, il retourne un promise contenant la valeur transformée
et comme un flatmapping: il n’y a pas succession de promise qui enveloppe un résultat comme cela pourrait se passer
Comment récupérer les erreurs des promises?
En utilisant catch. Il saute les multiples then pour aller vers le catch
Qu’est que le chainage des promises?
on peut chainer les then pour faire plusieurs opérations les unes à la suite des autres quand les résultats de l’un est prêt pour le suivant
Opération asynchrone des promises
Utilisation de Fetch API par exemple pour atteindre le résultat d’une requête asynchrone avant de traiter le résultat
Exemple d’utilisation de Fetch
function toJson(response) { return response.json(); }
fetch(url de l’api).then(toJson).then(logIdentity).catch(logError);
Retourner le résultat de la première promise qui est rejected ou fulfilled?
Promise.Race([promiseEvent1,promiseEvent2]).then(logIdentity)
Retourner le résultat de plusieurs promises ou le rejet immédiat
Promise.all( …)
Retourner un tableau des promises fulfilled ou rejected
Promise.allSettled
Est-ce que la promise suit les lois des Functors?
Non, il ne faut pas refactoriser de promise.then(f).then(g) en promise.then(x=>g(f(x)));
Est-ce que les promises sont des monads?
Non les lois sur l’identité sont brisées