В чем отличие fetch от XmlHttpRequest?
Выберите верный ответ
Скорость
Синхронность
Поддерживаемые протоколы
Обработка статусных кодов
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
console.log(data);
}
};
xhr.send();
Fetch:
fetch('https://api.example.com/data')
.then(function(response) {
return response.json();
})
.then(function(data) {
console.log(data);
});
XMLHttpRequest требует создания нового экземпляра, установки метода (GET, POST и т.д.), URL и настройки обработчика события readyStateChange, который вызывается при каждом изменении состояния запроса. Fetch использует простой и прямолинейный синтаксис Promises, что делает код более понятным и легко поддерживаемым.
2. Поддержка протоколов:
XMLHttpRequest поддерживает обмен данными с помощью разных протоколов, таких как HTTP, HTTPS и файловый протокол. Однако Fetch также поддерживает междоменные и CORS-запросы, что делает его более мощным и гибким.
3. Обработка статусных кодов:
XMLHttpRequest имеет свойство status, в котором содержится код состояния ответа сервера. Fetch также предоставляет объект Response, который содержит статус и другую информацию, связанную с ответом сервера. Однако Fetch автоматически отклоняет обещание при получении сетевой ошибки (такой как отсутствие интернет-соединения), в то время как XMLHttpRequest вызывает обработчик ошибок.
4. Работа с файлами:
XMLHttpRequest позволяет использовать метод FormData для отправки файлов на сервер с помощью метода POST. Fetch также поддерживает FormData, но имеет также простой способ отправки файлов в виде объекта Blob или с использованием потока запроса (RequestStream).
5. Обработка запросов:
С помощью Fetch вы можете легко завершить или отменить запрос с помощью методов like .complete, .abort, .body, .json и т.д. Однако, в некоторых браузерах у XMLHttpRequest есть такая возможность в виде .abort() и .done().
В целом, Fetch является более современным и удобным инструментом для асинхронных запросов на сервер веб-разработчиками, но XMLHttpRequest все еще активно используется в большинстве проектов. Выбор между ними может зависеть от конкретных требований и ограничений проекта.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет