Цель : пользователь перемещает ползунок, и значение ползунка отправляется на сервер для вычисления некоторого значения X, отображаемого рядом с ползунком, и постепенно обновляется по мере изменения значения ползунка.
То, что я сделал : использовал удушенный предмет, switchMap
'ped для получения значения:
sliderMoved$.pipe(
throttleTime(200),
switchMap(sliderVal => server.calculateX(sliderVal)
)
Он выполняет свою работу, но
Проблема: если сервер отвечает дольше, чем заданное время, оператор switchMap отменяет предыдущий вызов.Таким образом, медленное движение ползунка приводит к последовательности отмененных запросов, и значение обновляется только тогда, когда пользователь перестает скользить.
Необходимое улучшение: для каждого вызова сервера мне нужно ждать, пока ответ не придетобновите отображаемое значение X, а затем выполните новый вызов с последним значением ползунка.Если пользователь прекратил скольжение, когда был ожидающий запрос, должен быть выполнен последний запрос с последним значением ползунка.
(или, если вы лучше представляете, как он должен работать)