My Angular 4前端使用可观察订阅的websocket连接。当观察者在短时间内非常快速地接收数据时,前端滞后并完全阻塞。
有没有办法缓冲接收的数据并执行next
事件处理程序,并在每个事件之间有延迟?或者其他一些实现相同效果的解决方案。我基本上需要减慢next
事件的处理速度,但不要错过任何数据。
我查看了throttle功能,但跳过了数据而我不想这样做。类似的东西允许所有数据通过但延迟运行事件处理程序是我正在寻找的。
答案 0 :(得分:2)
减缓快速流动的流通常被称为"背压"。 https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/backpressure.md上的文章很好(如果有点过时)。
在您的具体情况下,您已经说过您不想丢失任何数据,因此您需要使用"无损?"背压法,例如buffer
或window
。从你所说的话来看,buffer
就是你所追求的。您可以将buffer
用于"关闭选择器"确定何时关闭缓冲区并开始新的缓冲区。