rxjs: постепенно извлекает значение, когда пользователь перемещает слайдер, отправляя новые запросы после завершения - PullRequest
0 голосов
/ 04 мая 2019

Цель : пользователь перемещает ползунок, и значение ползунка отправляется на сервер для вычисления некоторого значения X, отображаемого рядом с ползунком, и постепенно обновляется по мере изменения значения ползунка.

То, что я сделал : использовал удушенный предмет, switchMap 'ped для получения значения:

sliderMoved$.pipe(
    throttleTime(200),
    switchMap(sliderVal => server.calculateX(sliderVal)
)

Он выполняет свою работу, но

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

Необходимое улучшение: для каждого вызова сервера мне нужно ждать, пока ответ не придетобновите отображаемое значение X, а затем выполните новый вызов с последним значением ползунка.Если пользователь прекратил скольжение, когда был ожидающий запрос, должен быть выполнен последний запрос с последним значением ползунка.

(или, если вы лучше представляете, как он должен работать)

...