Подтвердить что ты не робот

В чем разница между API-интерфейсом Fetch и XMLHttpRequest?

Я знаю, что fetch использует promises, и оба из них позволяют вам выполнять запросы AJAX на сервер. Я прочитал, что fetch имеет некоторые дополнительные функции, которые недоступны в XMLHttpRequest (и в fetch polyfill, поскольку он основан на XHR). Какие дополнительные возможности имеет API-интерфейс fetch?

4b9b3361

Ответ 1

Есть несколько вещей, которые вы можете сделать с помощью fetch, а не с XHR:

  • Вы можете использовать API Cache с объектами запроса и ответа;
  • Вы можете выполнять запросы no-cors, получая ответ от сервера, который не реализует CORS. Вы не можете получить доступ к телу ответа непосредственно из JavaScript, но можете использовать его с другими API (например, Cache API);
  • Потоковые ответы (при XHR весь ответ буферизуется в памяти, при извлечении вы сможете получить доступ к потоку низкого уровня). Это еще не доступно во всех браузерах, но скоро будет.

Есть несколько вещей, которые вы можете сделать с XHR, которые вы еще не можете сделать с помощью fetch, но они будут доступны рано или поздно (см. абзац "Будущие улучшения" здесь: https://hacks.mozilla.org/2015/03/this-api-is-so-fetching/):

  • Отменить запрос (теперь это работает в Firefox и Edge, как объясняет @sideshowbarker в своем комментарии);
  • Сообщить о проделанной работе.

В этой статье https://jakearchibald.com/2015/thats-so-fetch/ содержится более подробное описание.

Ответ 2

начнут извлекать h2 >

  • отсутствует встроенный метод для использования документов
  • Невозможно установить тайм-аут пока
  • не может переопределить заголовок типа содержимого ответа

XHR

  • нет способа не отправлять файлы cookie
  • не может возвращать FormData экземпляры
  • не имеет эквивалента fetch no-cors mode