Подтвердить что ты не робот

XmlHttpRequest onprogress interval

Я использую 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);

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

4b9b3361

Ответ 1

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

Загрузки:

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

Загрузки:

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

Я не знаю api, чтобы настроить эту функциональность.

Ответ 2

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