【问题标题】:how to get the rxjs to pause a stream then start again later如何让 rxjs 暂停流,然后稍后重新开始
【发布时间】:2021-02-06 03:23:17
【问题描述】:

我正在使用 Angular 和 Firebase 制作一些东西。在应用程序中,我有一个来自 Firebase 的 RxJs 数据流,它来自一个集合,因此它的作用类似于模板上带有异步管道的数组。一次显示一个项目,其他项目在屏幕右侧或左侧显示。用户可以通过一次浏览一个项目来更改屏幕上显示的内容。有一个按钮可以更改显示项目的数据。由于项目是数据流的一部分并且数据已更新,因此它会从流中删除项目不符合由于更改而保留在此流中的要求。有没有办法暂停流或以某种方式保持数据不变,即使 Firebase 数据已更改,直到查看所有项目或达到其他要求,然后再次启动流或允许更新数据到来再来一次?

【问题讨论】:

    标签: angular firebase rxjs


    【解决方案1】:

    如果您使用 Angular 异步管道并将其直接附加到来自 firebase 集合的数据流,那么数据更新的影响将是实时的,如您所见。事实上,这就是 firebase 的工作方式。

    延迟更新的一种简单方法是将更新临时保存到 Angular 组件中的单独变量中,并在最后一起批量更新到 firebase。但是,如果另一个用户 A 从其他设备更新了影响用户 B 屏幕上可见流的数据,则来自 A 的更新将实时显示。

    另一种方法是单独实现集合订阅并设置缓存(例如在服务中使用 RxJs 主题)并实现 UI 以使用此主题作为其源,而不是直接连接到 firebase。然后,您可以使用基于 UI 按钮单击的触发器在需要更新时订阅,在不需要时取消订阅。这样,服务仍会缓存最新的数据,但在用户更改数据时不会更新 UI。

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 1970-01-01
      • 2012-05-15
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多