javascript - 可观察的订阅无法以非常短的间隔处理连续传入的数据

标签 javascript angular websocket rxjs observable

我的 Angular 4 前端有一个使用可观察订阅的 websocket 连接。当 observable 在短时间间隔内非常快速地接收数据时,前端会滞后并完全阻塞。

有没有办法缓冲接收到的数据并在每个事件之间延迟执行 next 事件处理程序?或达到相同效果的其他某种解决方案。我基本上需要放慢 next 事件的处理速度,但又不会错过任何数据。

我看过 throttle功能,但跳过数据,我不想要那个。我正在寻找类似的东西,它允许所有数据通过但延迟运行事件处理程序。

最佳答案

减缓快速移动的流通常被称为“背压”。 https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/backpressure.md 上有一篇很好的(如果有点过时)文章.

在您的特定情况下,您说过不想丢失任何数据,因此您需要使用“无损失”背压方法,例如 buffer窗口。从你所说的听起来 buffer 就是你所追求的。您可以使用带有“关闭选择器”的 buffer 来确定何时关闭缓冲区并启动新缓冲区。

关于javascript - 可观察的订阅无法以非常短的间隔处理连续传入的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352659/

相关文章:

Angular 4 将两个独立的元素滚动在一起

concurrency - 维护打开的 websocket 连接列表的最佳方法是什么?

javascript - 在 JQueryUI 中,如果我在外部文件中构建和调用 javascript,则模式选项不起作用

javascript - 使用另一个数组的值修改 javascript forEach 结果

javascript - 在 Knockoutjs 中的 ViewModel 之间共享变量状态

javascript - 使用 websockets Golang 将更改推送到客户端

android - 让我们加密证书以使用 android api < 20

javascript - jquery-取消选中下拉更改的复选框不起作用

angular - HttpClient错误处理程序中的 Angular 调用自定义函数

java - 将旧版 Spring MVC + JSP 应用程序与 Angular 应用程序一起运行是个好主意吗?