Существуют ли полезные варианты использования 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) Передача данных была завершена или что-то пошло не так во время передачи (например, бесконечные перенаправления).

Другие вопросы по тегам