Wiem, że używa Fetch API Promise
s i oba pozwalają na wysyłanie żądań AJAX do serwera.
Przeczytałem, że Fetch API ma kilka dodatkowych funkcji, które nie są dostępne w XMLHttpRequest
(i w polyfill Fetch API, ponieważ jest na nim oparty XHR
).
Jakie dodatkowe możliwości ma Fetch API?
javascript
ajax
xmlhttprequest
fetch-api
ilyabasiuk
źródło
źródło
fetch(url).then(function(data) (...));
nie jest to prostsze niż użycieXMLHttpRequest
do tego samego? Może mieć wiele innych funkcji, ale rany, z pewnością jest prostszy w użyciu do zwykłych rzeczy. JEST to wyczyszczone API.Odpowiedzi:
Jest kilka rzeczy, które możesz zrobić za pomocą pobierania, a nie za pomocą XHR:
no-cors
żądania, uzyskując odpowiedź z serwera, który nie implementuje mechanizmu CORS. Nie możesz uzyskać dostępu do treści odpowiedzi bezpośrednio z JavaScript, ale możesz jej używać z innymi API (np. Cache API);Jest kilka rzeczy, które możesz zrobić z XHR, a których nie możesz jeszcze zrobić za pomocą pobierania, ale będą one dostępne wcześniej czy później (przeczytaj akapit „Przyszłe ulepszenia” tutaj: https: //hacks.mozilla .org / 2015/03 / this-api-is-so-fetching / ):
Ten artykuł https://jakearchibald.com/2015/thats-so-fetch/ zawiera bardziej szczegółowy opis.
źródło
fetch
żądań nie można odtworzyć w Narzędziach dla programistów.fetch
mogę prosić o pliki, ale XHR nie.sprowadzać
ReadableStream
instancji jako treści żądań jeszcze nie nadeszła )XHR
mozAnon
flagi lubAnonXMLHttpRequest
konstruktora)FormData
instancjifetch
'sno-cors
trybuźródło
fetch
brakuje również postępu. dzięki XHR możesz śledzić postępy wprogress
wydarzeniuResponse#body
.Powyższe odpowiedzi są dobre i zapewniają dobre spostrzeżenia, ale podzielam tę samą opinię, którą podzieliłem w tym wpisie na blogu Google Developers , ponieważ główną różnicą (z praktycznego punktu widzenia) jest wygoda wbudowanej obietnicy zwróconej z
fetch
Zamiast pisać taki kod
możemy wszystko uporządkować i napisać coś bardziej zwięzłego i czytelnego z obietnicami i nowoczesną składnią
źródło