Как прогнозировать промежуточный прогресс для пошаговой задачи?

На сайте долгоиграющая задача выполняется шагами: серия ajax вызовов. Каждый выполняется секунд 12–18. Пользователю хочется показывать что-то часто обновляемое, предсказуемое, типа живого прогресса, мелкими шагами.

Попробовал сделать линейно: предполжил, что progress = f(time) это просто k * time. При поступлении следующего ответа, этот k корректируется исходя из последней полученной точки. fiddle – имитация, время выполнения очередной пачки случайно +- 4 сек.

Похоже, линейность — неправильный подход: если реальный шаг внезапно тормозит, по сравнению с предыдущими, мой прогресс откатывается назад, когда приходят, наконец, реальные данные.

Как можно относительно реалистично угадывать прогресс, опираясь на дискретные шаги?
  • Вопрос задан
  • 2349 просмотров
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Время взять с дополнительным запасом, а прогресс пусть подбирается к следующему рубежу не с линейной скоростью, а с определенными пульсациями этой скорости.

А чтобы угадывать, нужно иметь статистику, и чем она обширнее, тем точнее будет угадывание.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы