首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >冷热观测-最后一次刷新值

冷热观测-最后一次刷新值
EN

Stack Overflow用户
提问于 2016-03-16 18:40:09
回答 1查看 415关注 0票数 1

我有一个场景,我想从服务器获取一些数据,并且用户可以请求刷新这些数据。页面的其余部分需要更新以反映当前加载的数据迭代。

我想象一下,在这里,我有一个可以观察到的热点,可以发布它加载的数据。我不想将数据的所有旧迭代保留为1,我只关心数据的最新迭代,2.如果用户在给定的会话中进行足够的刷新,可能会导致内存不足的异常。

但是,我确实希望保留上一个已发布的值,这样如果我动态地打开一个需要访问相同数据的新组件,它就不会发出不必要的新请求。为此,我需要一个可观察的坐在热可观测的顶部,这将只保留和释放来自热可观测的最后的排放。这里有一个图表说明了这个想法:

代码语言:javascript
运行
复制
dataStream     X - - - - - Y - - - - |> 
echoStream     X - - - - - Y - - - - |> 
subscription1  X - - - - - Y - - - - |> 
subscription2          X - Y - - - - |> 
subscription3                  Y - - |>

echoStream被订阅到dataStream。subscription1、subscription2和subscription3都订阅了echoStream,但它们在不同的点订阅。在订阅时,它们获得从dataStream发出的最后一个值,并从dataStream接收后续更新。

echoStream是一种可以观察到的“热”和“冷”的混合,具有有限的历史保留。

在上面的示例中,rxjs是否提供了一个标准操作符来设置类似echoStream的内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 19:14:25

就我所理解的而言,您可以在以下形式中使用shareReplay运算符:

echoStream = dataStream.shareReplay(1)

如文件所述:

返回一个可观察的序列,该序列共享基础序列的单个订阅并重放通知. 这个操作符是一个重放的专门化,它连接到可连接的可观察序列,当观察者的数量从0到1时,当没有更多的观察者时,它断开连接。

这里有两件事是由这个操作符做的。当订阅者订阅流时,它将立即接收流发出的最新值(或之前Xms时间窗口中发出的n个最新值或值--取决于调用操作符时传递的参数)。这就是重放功能。然后是自动取消订阅功能,当流不再有任何订阅者时,该功能就会启动。

如果您不关心自动取消订阅,您可以使用replay操作符代替,您将只获得重放功能。例如:

echoStream = dataStream.replay(1)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36044309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档