目标:用户移动滑块,并将滑块值发送到服务器以计算一些值X,该值显示在滑块旁边,并随着滑块值的变化逐渐更新。
我所做的事情:使用了受限制的主题,switchMap
可以获取该值:
sliderMoved$.pipe(
throttleTime(200),
switchMap(sliderVal => server.calculateX(sliderVal)
)
它可以完成工作,但是
问题:如果服务器响应时间超过限制时间,则switchMap运算符将取消previos调用。因此,滑块的缓慢移动会导致取消请求的顺序,并且只有在用户停止滑动时才更新值。
需要改进:对于每个服务器调用,我都需要等待直到响应出现,更新显示的值X,然后使用滑块的最新值触发新的调用。如果用户在有待处理的请求时停止滑动,则必须做出最后一个具有最新滑块值的请求。
(或者,如果您更好地了解它应该如何工作)