Saya tahu bahwa Ambil API menggunakan Promise
s dan keduanya memungkinkan Anda untuk melakukan permintaan AJAX ke server.
Saya telah membaca bahwa Fetch API memiliki beberapa fitur tambahan, yang tidak tersedia di XMLHttpRequest
(dan dalam polyfill API Fetch, karena didasarkan pada XHR
).
Apa kemampuan tambahan yang dimiliki API Ambil?
javascript
ajax
xmlhttprequest
fetch-api
ilyabasiuk
sumber
sumber
fetch(url).then(function(data) (...));
tidak lebih sederhana daripada menggunakanXMLHttpRequest
untuk melakukan hal yang sama? Mungkin memiliki banyak fitur lain, tetapi ya ampun, itu jelas lebih mudah digunakan untuk hal-hal umum. Itu adalah API yang dibersihkan.Jawaban:
Ada beberapa hal yang dapat Anda lakukan dengan mengambil dan tidak dengan XHR:
no-cors
permintaan, mendapat respons dari server yang tidak menerapkan CORS. Anda tidak dapat mengakses badan tanggapan langsung dari JavaScript, tetapi Anda dapat menggunakannya dengan API lain (mis. API Cache);Ada beberapa hal yang dapat Anda lakukan dengan XHR yang belum dapat Anda lakukan dengan mengambil, tetapi mereka akan tersedia cepat atau lambat (baca paragraf "Peningkatan masa depan" di sini: https: //hacks.mozilla .org / 2015/03 / this-api-is-so-fetching / ):
Artikel ini https://jakearchibald.com/2015/thats-so-fetch/ berisi deskripsi yang lebih rinci.
sumber
fetch
permintaan tidak dapat diputar ulang di Alat Pengembang.fetch
dapat meminta file, tetapi XHR tidak bisa.mengambil
ReadableStream
instance karena badan permintaan belum datang )XHR
mozAnon
atauAnonXMLHttpRequest
konstruktor)FormData
instancefetch
'sno-cors
modussumber
fetch
juga tidak ada kemajuan. dengan XHR Anda dapat melacak kemajuan denganprogress
acara tersebutResponse#body
.Jawaban di atas baik dan memberikan wawasan yang baik, tetapi saya berbagi pendapat yang sama dengan yang dibagikan dalam entri blog pengembang google ini bahwa perbedaan utama (dari perspektif praktis) adalah kenyamanan janji bawaan yang dikembalikan dari
fetch
Alih-alih harus menulis kode seperti ini
kita dapat membersihkan dan menulis sesuatu yang lebih ringkas dan mudah dibaca dengan janji dan sintaksis modern
sumber