Ich weiß, dass die Fetch-API Promise
s verwendet und beide es Ihnen ermöglichen, AJAX-Anforderungen an einen Server zu senden.
Ich habe gelesen, dass die Fetch-API einige zusätzliche Funktionen enthält, die in XMLHttpRequest
(und in der Fetch-API-Polyfüllung, da sie auf basiert XHR
) nicht verfügbar sind .
Welche zusätzlichen Funktionen bietet die Fetch-API?
javascript
ajax
xmlhttprequest
fetch-api
ilyabasiuk
quelle
quelle
fetch(url).then(function(data) (...));
das nicht einfacher ist, alsXMLHttpRequest
dasselbe zu tun? Es kann viele andere Funktionen haben, aber meine Güte, es ist sicher einfacher für allgemeine Dinge zu verwenden. Es ist eine bereinigte API.Antworten:
Es gibt einige Dinge, die Sie mit Fetch und nicht mit XHR tun können:
no-cors
Anforderungen und eine Antwort von einem Server erhalten, der CORS nicht implementiert. Sie können nicht direkt über JavaScript auf den Antworttext zugreifen, aber Sie können ihn mit anderen APIs (z. B. der Cache-API) verwenden.Es gibt einige Dinge, die Sie mit XHR tun können, die Sie mit Fetch noch nicht tun können, die jedoch früher oder später verfügbar sein werden (lesen Sie den Abschnitt "Zukünftige Verbesserungen" hier: https: //hacks.mozilla .org / 2015/03 / this-api-is-so-fetching / ):
Dieser Artikel https://jakearchibald.com/2015/thats-so-fetch/ enthält eine detailliertere Beschreibung.
quelle
fetch
Anforderungen in den Entwicklertools nicht wiedergegeben werden können.fetch
kann ich Dateien anfordern, XHR jedoch nicht.holen
ReadableStream
Instanzen als Anforderungskörper steht noch aus )XHR
mozAnon
Flags oder desAnonXMLHttpRequest
Konstruktors).FormData
Instanzen können nicht zurückgegeben werdenfetch
'sno-cors
Modusquelle
fetch
fehlt auch Fortschritt. Mit XHR können Sie den Fortschritt desprogress
EreignissesResponse#body
.Die obigen Antworten sind gut und bieten gute Einblicke, aber ich teile die gleiche Meinung wie in diesem Blogeintrag von Google-Entwicklern , da der Hauptunterschied (aus praktischer Sicht) die Bequemlichkeit des eingebauten Versprechens ist, von dem zurückgegeben wird
fetch
Anstatt Code wie diesen schreiben zu müssen
Wir können Dinge aufräumen und etwas schreiben, das mit Versprechungen und moderner Syntax etwas prägnanter und lesbarer ist
quelle