max_shane
@max_shane
Javascript / Node.js dev

Почему при загрузке файлов методом POST через XMLHttpRequest происходит задержка после xhr.upload.onload?

Приветствую!

Собственно вот суть вопроса:
При загрузке файлов, на этапе xhr.readyState = 1 и после наступления события xhr.upload.onload происходит какая-то задержка, примерно равная времени загрузки файлов (xhr.upload.onprogress).
Файлы успешно загружены ( о чем говорит событие xhr.upload.onload ). И на этом этапе (xhr.readyState = 1) мы еще не ждем ответа от сервера, а только готовимся выполнить send(). Потом-то, когда "там" что-то прогружается, статусы 2,3,4 отрабатываются почти одновременно.
Что может происходить в этот момент?
Или просто сам API по дебильному реализован, и по факту 100% загрузка еще не означает 100% подготовку файлов к отправке (send())? Получается прогресс-бар загрузки дошел до 100% а на самом деле этап отправки еще наступит не скоро (xhr.readyState = 2).
Просто какой смысл тогда в этом xhr.upload.onprogress если он мне не дает информации о том, что текущий статус/этап вот вот будет выполнен (при приближении прогресс-бара к концу).
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
@GrayHorse
Потому что сначала реквест, и только потом респонс.

Запускаешь: xhr.send(data); и по очереди:
// сначала ты
xhr.upload.onprogress // загрузка на сервер
xhr.upload.onload // загрузка на сервер завершена
// потом сервер
xhr.onreadystatechange // xhr.readyState === 2 // HEADERS_RECEIVED // получены заголовки ответа (и только)
xhr.onreadystatechange // xhr.readyState === 3 // LOADING // загрузка ответа сервера
xhr.onprogress // загрузка ответа сервера
xhr.onreadystatechange // xhr.readyState === 4 // DONE
xhr.onload // загрузка ответа сервера завершена
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы