Существуют ли полезные варианты использования readyState, отличного от «4» (завершено) в обратном вызове XHR.onreadystatechange? - PullRequest
4 голосов
/ 22 декабря 2010

Вы когда-нибудь использовали объект XHR для перехвата onreadystatechange с готовым состоянием, отличным от "4" (завершено)?

Мне любопытно узнать, запускаете ли вы когда-нибудь функцию с возможными различными значениями. Я не могу представить себе реальное использование других государств. Они чем-то полезны, чтобы что-то делать?

Можете привести некоторые практические примеры, если таковые имеются?

Я говорю об этом :

  • 0: запрос не инициализирован
  • 1: установлено соединение с сервером
  • 2: запрос получен
  • 3: обработка запроса
  • 4: запрос завершен и ответ готов

1 Ответ

2 голосов
/ 22 декабря 2010

Я использую его в интрасети, которую я разработал для целей уведомления.Перехватывая состояние 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/#states):

  • UNSENT (числовое значение 0) объект был создан.

  • OPENED (числовое значение 1) Метод open () был успешно вызван. Во время этого запроса состояния заголовки могут быть установлены с помощью setRequestHeader () и запрос может быть выполнен с помощью метода send ().

  • HEADERS_RECEIVED (числовое значение 2) Все перенаправления (если есть) были выполнены и все HTTPполучены заголовки окончательного ответа. Доступно несколько элементов ответа объекта.

  • LOADING (числовое значение 3) Получено тело объекта ответа.

  • ВЫПОЛНЕНО (числовое значение 4) Передача данных завершена или во время передачи произошла ошибка (например, бесконечные перенаправления).

...