Je sais que Fetch API utilise des Promise
s et les deux vous permettent de faire des requêtes AJAX à un serveur.
J'ai lu que Fetch API avait des fonctionnalités supplémentaires, qui ne sont pas disponibles dans XMLHttpRequest
(et dans le polyfill de l'API Fetch, car il est basé sur XHR
).
Quelles sont les fonctionnalités supplémentaires de l'API Fetch?
javascript
ajax
xmlhttprequest
fetch-api
ilyabasiuk
la source
la source
fetch(url).then(function(data) (...));
n'est pas plus simple que d'utiliserXMLHttpRequest
pour faire la même chose? Il peut avoir beaucoup d'autres fonctionnalités, mais bon sang, il est certainement plus simple à utiliser pour les choses courantes. C'est une API nettoyée.Réponses:
Il y a quelques choses que vous pouvez faire avec Fetch et non avec XHR:
no-cors
requêtes, obtenir une réponse d'un serveur qui n'implémente pas CORS. Vous ne pouvez pas accéder au corps de la réponse directement depuis JavaScript, mais vous pouvez l'utiliser avec d'autres API (par exemple l'API Cache);Il y a quelques choses que vous pouvez faire avec XHR que vous ne pouvez pas encore faire avec fetch, mais elles seront disponibles tôt ou tard (lisez le paragraphe "Améliorations futures" ici: https: //hacks.mozilla .org / 2015/03 / this-api-is-so-fetching / ):
Cet article https://jakearchibald.com/2015/thats-so-fetch/ contient une description plus détaillée.
la source
fetch
demandes ne peuvent pas être rejouées sur les outils de développement.fetch
peut demander des fichiers, mais XHR ne le peut pas.chercher
ReadableStream
instances en tant que corps de requête est encore à venir )XHR
mozAnon
ou duAnonXMLHttpRequest
constructeur)FormData
instancesfetch
de »no-cors
modela source
fetch
manque également de progrès. avec XHR, vous pouvez suivre les progrès de l'progress
événementResponse#body
.Les réponses ci-dessus sont bonnes et fournissent de bonnes informations, mais je partage le même avis que celui partagé dans cette entrée de blog des développeurs Google en ce que la principale différence (d'un point de vue pratique) est la commodité de la promesse intégrée renvoyée par
fetch
Au lieu d'avoir à écrire du code comme celui-ci
nous pouvons nettoyer les choses et écrire quelque chose d'un peu plus concis et lisible avec des promesses et une syntaxe moderne
la source