XmlHttpRequest интервал выполнения - PullRequest
36 голосов
/ 31 марта 2011

Я использую XmlHttpRequests для загрузки изображений на сервер, и я хотел бы показать пользователю ход этих загрузок.

К сожалению, интервал между вызовами моего обработчика события onprogress слишком велик.Обычно onprogress вызывается только один или два раза для изображения 500k.

Вот мой код:

/* This function is not called often enough */
function progress(e){
    console.log('Uploading: ' + Math.round((e.loaded / e.total) * 100) + ' %');
}

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', progress, false);
xhr.send(data);

Можно ли изменить это поведение или это жестко задано где-то в реализации браузера?

Ответы [ 2 ]

32 голосов
/ 05 апреля 2011

W3 излагает следующие рекомендации в своем документе XMLHttpRequest Level 2 . Очевидно, что в разных браузерах могут быть разные уровни соответствия.

Загрузок:

Пока тело объекта запроса загружается и флаг завершения загрузки имеет значение false, поставьте в очередь задачу для запуска события прогресса с именем progress в объекте XMLHttpRequestUpload примерно каждые 50 мс или для каждого переданного байта, в зависимости от того, что случается реже . - W3 XMLHttpRequest Уровень 2 (выделен жирным шрифтом)

Загрузка:

Когда говорят, что во время загрузки идет уведомление о прогрессе, поставьте в очередь задачу для запуска события прогресса с именем progress примерно каждые 50 мс или для каждого полученного байта, в зависимости от того, что меньше всего . - W3 XMLHttpRequest Уровень 2 (выделен жирным шрифтом)

Я не знаю API для настройки этой функции.

3 голосов
/ 14 марта 2013

Кроме того, будьте осторожны, так как локальная отладка HTTP-прокси (например, Чарльза) имеет тенденцию влиять на интервал запуска событий прогресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...