Я знаю, что Fetch API использует Promise
s, и оба они позволяют вам делать AJAX-запросы к серверу.
Я читал, что Fetch API имеет некоторые дополнительные функции, которые недоступны XMLHttpRequest
(и в полизаполнении Fetch API, так как он основан на XHR
).
Какие дополнительные возможности есть в Fetch API?
javascript
ajax
xmlhttprequest
fetch-api
ilyabasiuk
источник
источник
fetch(url).then(function(data) (...));
это не проще, чем использоватьXMLHttpRequest
для того же? У него может быть много других функций, но, черт возьми, его проще использовать для обычных вещей. Это очищенный API.Ответы:
Есть несколько вещей, которые вы можете сделать с fetch, а не с XHR:
no-cors
запросы, получая ответ от сервера, который не поддерживает CORS. Вы не можете получить доступ к телу ответа напрямую из JavaScript, но вы можете использовать его с другими API (например, Cache API);С XHR вы можете сделать несколько вещей, которые вы еще не можете сделать с fetch, но они будут доступны рано или поздно (см. Параграф «Будущие улучшения» здесь: https: //hacks.mozilla .org / 2015/03 / это-то-то-самое-приятное / ):
Эта статья https://jakearchibald.com/2015/thats-so-fetch/ содержит более подробное описание.
источник
fetch
запросы не могут быть воспроизведены в Инструментах разработчика.fetch
может запросить файлы, но XHR не может.получать
ReadableStream
экземпляров, так как тела запросов еще впереди )XHR
mozAnon
флага илиAnonXMLHttpRequest
конструктора)FormData
экземплярыfetch
sno-cors
источник
fetch
также отсутствует прогресс. с XHR вы можете отслеживать прогресс сprogress
событиемResponse#body
.Приведенные выше ответы являются хорошими и дают хорошее представление, но я разделяю то же мнение, что и в этой записи блога разработчиков Google, в том, что основное отличие (с практической точки зрения) заключается в удобстве встроенного обещания, возвращаемого из
fetch
Вместо того, чтобы писать такой код
мы можем привести в порядок вещи и написать что-то более краткое и удобочитаемое с обещаниями и современным синтаксисом
источник