Существуют ли полезные варианты использования readyState, отличного от "4" (завершено) в обратном вызове XHR.onreadystatechange?
Вы когда-нибудь использовали объект XHR для перехвата onreadystatechange с ReadyState, отличным от "4" (завершено)?
Мне любопытно узнать, запускаете ли вы когда-нибудь функцию с возможными различными значениями. Я не могу представить себе реальное использование других государств. Они чем-то полезны, чтобы что-то сделать?
Можете привести некоторые практические примеры, если таковые имеются?
- 0: запрос не инициализирован
- 1: соединение с сервером установлено
- 2: запрос получен
- 3: обработка запроса
- 4: запрос завершен и ответ готов
1 ответ
Я использую его во внутренней сети, которую я разработал для целей уведомления. Перехватывая состояние 3, я могу уведомить пользователя о том, что запрос запущен.
Я также использую его для определения времени передачи запросов. Я показываю время, прошедшее между состояниями 3 и 4.
Поскольку я использую MooTools, я расширил класс Request, чтобы запустить событие onStateChange:
var EarlyRequest = new Class({Extends: Request,
onStateChange: function() {
this.fireEvent("onStateChange", [this.xhr.readyState]);
this.parent();
}
});
На дополнительном примечании. Определения штатов, которые вы опубликовали (из w3cschools), вводят в заблуждение, они мне более понятны (с http://www.w3.org/TR/XMLHttpRequest/):
UNSENT (числовое значение 0) Объект был построен.
OPENED (числовое значение 1) Метод open () был успешно вызван. Во время этого состояния заголовки запроса могут быть установлены с помощью setRequestHeader(), а запрос может быть выполнен с помощью метода send ().
HEADERS_RECEIVED (числовое значение 2) Все перенаправления (если есть) были выполнены, и все HTTP-заголовки окончательного ответа были получены. Несколько ответных членов объекта теперь доступны.
ЗАГРУЗКА (числовое значение 3) Получено тело объекта ответа.
ВЫПОЛНЕНО (числовое значение 4) Передача данных была завершена или что-то пошло не так во время передачи (например, бесконечные перенаправления).