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