Raconté par Vincent Jugé
sur la base d'un cours créé par Rémi Forax
Sous-ensemble de la notation sur les objets et les tableaux JavaScript qui sert de format d'échange de données
La commande JSON.parse permet de décoder en JavaScript une chaîne de caractères comme un objet JSON.
AJAX permet de faire, en JavaScript, des requêtes à un serveur en enregistrant une fonction qui sera exécutée plus tard, lorsque les données du serveur seront disponibles.
Le fait de reporter le traitement au moment où les données seront présentes est appelé traitement asynchrone.
Dans la réalité, on utilise plutôt JSON que XML comme format de transport, mais on garde le nom AJAX (au lieu de AJAP).
JSON est non structuré et non validable facilement donc il est utilisé pour les transferts de petites données (en ko).
XML est plus lourd mais structuré et validable, il est utilisé pour le transfert de données plus importantes (en Mo).
Un objet XMLHttpRequest permet de faire une requête AJAX.
open(method, url, async?) configure la requête.
send() envoie la requête.
onreadystatechange est appelée lorsque cet état change.
readyState indique l'état de la requête.
Si le readyState est 4 et que le status est 200,
on peut lire le responseText.
Une Promise est la promesse d'une valeur (ou erreur) à venir.
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() 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 !
URL.createObjectURL permet de créer une URL locale contenant les données de l'image.
blob = binary large object
Calcul de plusieurs promesses en parallèle :
le résultat est un tableau des promesses résolues.
Attention ! Si on enchaîne des appels à
Promise.all(),
on peut créer des goulots d'étranglement.
Il est plus efficace de paralléliser au maximum !
La promesse résultante est calculée dès qu'une des promesses a fini.