JavaScript


AJAX et Promesses

Raconté par Arnaud de Mesmay sur la base d'un cours créé par Rémi Forax et Vincent Jugé.

Promesse

Une Promise est la promesse d'une valeur (ou erreur) à venir.


Promesse & AJAX à la main


Fetch

fetch()


fetch("http://api.foo.bar.com/users/bob")
.then(response => {
   if (response.ok) {
     return ...
   }
   throw Error(response.statusText);
 });

Attention, fetch renvoie une réponse même si la réponse est Not Found.

Fetch en vrai

fetch() fait une requête AJAX et renvoie une Promise.
response.json() est aussi une Promise qui va parser le JSON.


then() permet de combiner les promesses !

Fetch d'une image

URL.createObjectURL permet de créer une URL locale contenant les données de l'image.


blob = binary large object

Promise.all

Calcul de plusieurs promesses en parallèle :
le résultat est un tableau des promesses résolues.


Promise.all

Attention ! Si on enchaîne des appels à Promise.all(),
on peut créer des goulots d'étranglement.


Promise.all

Il est plus efficace de paralléliser au maximum !


Promise.race

La promesse résultante est calculée dès qu'une des promesses a fini.