【发布时间】:2016-07-02 20:13:04
【问题描述】:
我有一个场景,我想从服务器获取一些数据,并且用户可以请求刷新这些数据。页面的其余部分需要更新以反映当前加载的数据迭代。
我正在想象这个我有一个热的 Observable 来发布它加载的数据。我不想将数据的所有旧迭代保留为 1。我只关心数据的最新迭代和 2。如果用户在给定会话中刷新足够多,它可能会导致内存不足异常.
但是,我确实希望保留最后发布的值,这样如果我动态启动需要访问相同数据的新组件,它就不会不必要地发送新请求。为此,我需要一个 Observable 放在 hot observable 之上,它只会保留并发出 hot observable 的最后一个发射。这是一个说明这个想法的图表:
dataStream X - - - - - Y - - - - |>
echoStream X - - - - - Y - - - - |>
subscription1 X - - - - - Y - - - - |>
subscription2 X - Y - - - - |>
subscription3 Y - - |>
echoStream 订阅了 dataStream。 subscription1、subscription2 和subscription3 都订阅了echoStream,但订阅的点不同。在订阅时,它们会获取从 dataStream 发出的最后一个值,并从 dataStream 接收后续更新。
echoStream 有点混合了 Hot 和 Cold Observable,具有有限的历史保留。
rxjs 是否提供了标准运算符来设置上面示例中的 echoStream 之类的东西?
【问题讨论】:
标签: javascript typescript rxjs rxjs5