Асинхронная связь — фундаментальный аспект веб-разработки, а объект XMLHttpRequest (XHR) — мощный инструмент для ее достижения. Свойство xhr.readyState
играет решающую роль в отслеживании статуса запроса XHR. В этой статье мы углубимся в различные значения состояния готовности XHR и рассмотрим различные методы их обработки, подкрепленные примерами кода.
Понимание состояния готовности XHR.
Свойство xhr.readyState
представляет текущее состояние запроса XHR. Он может принимать разные значения от 0 до 4, каждое из которых указывает на определенный этап жизненного цикла запроса-ответа. Давайте подробнее рассмотрим каждое из этих состояний и связанные с ними методы.
xhr.readyState = 0
(UNSENT):
Это состояние указывает на то, что объект XHR создан, но еще не инициализирован. На данном этапе никаких запросов не поступало. Чтобы обработать это состояние, вы можете использовать методxhr.open()
, чтобы указать метод HTTP и URL-адрес серверного ресурса.
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true);
<старый старт="2">
xhr.readyState = 1
(ОТКРЫТО):Объект XHR инициализирован и вызван метод
open()
. Однако запрос еще не отправлен. Это состояние обычно используется для настройки дополнительных заголовков запроса.xhr.setRequestHeader('Content-Type', 'application/json');
xhr.readyState = 2
(HEADERS_RECEIVED):
Объект XHR получил заголовки ответа от сервера. Доступ к заголовкам ответов можно получить с помощью методаxhr.getAllResponseHeaders()
.
const headers = xhr.getAllResponseHeaders();
console.log(headers);
xhr.readyState = 3
(ЗАГРУЗКА):
Объект XHR находится в процессе получения данных ответа. Вы можете отслеживать ход выполнения запроса с помощью событияxhr.onprogress
.
xhr.onprogress = function(event) {
const loadedPercentage = (event.loaded / event.total) * 100;
console.log(`Progress: ${loadedPercentage}%`);
};
xhr.readyState = 4
(ГОТОВО):
Запрос XHR выполнен, данные ответа доступны. Доступ к данным ответа можно получить с помощью свойстваxhr.responseText
.
console.log(xhr.responseText);
Понимание различных значений состояния готовности XHR имеет решающее значение для эффективной обработки асинхронных запросов. Используя методы, связанные с каждым готовым состоянием, вы можете создавать надежные и быстро реагирующие веб-приложения. Поэкспериментируйте с предоставленными примерами кода и изучите дополнительные возможности объекта XHR.
Внедрение этих готовых методов XHR в ваши проекты веб-разработки расширит ваши возможности обработки асинхронных запросов и создания динамического пользовательского интерфейса.