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