首页
学习
活动
专区
圈层
工具
发布

角4缓存
EN

Stack Overflow用户
提问于 2018-10-28 20:35:29
回答 1查看 273关注 0票数 0

问题:

  1. 我必须显示大量的数据
  2. 使用可更改计数的分页(用户可以选择每页显示10 / 20 /50 )
  3. 正在尝试使用以下链接https://blog.thoughtram.io/angular/2018/03/05/advanced-caching-with-rxjs.html的rxjs
  4. 但我有两个问题用这个..。 4.1。这提供了最新的数据,但我需要显示该特定页面的数据,并且在我再次返回时也需要显示相同的数据。 4.2。我在顶部使用搜索,这要求我使用整个数据,但是由于这个缓存按步骤获取数据,所以当用户在从后端服务中提取完整数据之前进行搜索时,我会遇到问题…

请提出解决这个问题的最佳方法.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 22:00:09

RXJS主题有3种不同类型的提要,至少

代码语言:javascript
复制
 1) if you miss it you miss it = Subject   
 2) give me the last value =  BehaviorSubject   
 3) give me all the last values = ReplaySubject

听起来你在找3号,对吧?如果是这样的话,就看看ReplaySubjects吧。

Subject -订阅服务器将只获得订阅后发出的已发布值。一个

BehaviorSubject -最后一个值被缓存。订阅者将在初始订阅时获得最新的值。

ReplaySubject -它可以缓存一个特定数量的排放。任何订阅者在订阅时都将获得所有缓存的值。

代码语言:javascript
复制
import * as Rx from "rxjs";

const subject = new Rx.ReplaySubject(2, 100);

// subscriber 1
subject.subscribe((data) => {
    console.log('Subscriber A:', data);
});

setInterval(() => subject.next(Math.random()), 200);

// subscriber 2
setTimeout(() => {
  subject.subscribe((data) => {
    console.log('Subscriber B:', data);
  });
}, 1000)

我们创建ReplaySubject并指定我们只想存储最后2个值,但不超过100 ms --我们开始每200 ms发送一个主题值。订阅者A将获取此信息,并记录由主题发送的每个值。我们开始订阅订户B,但在1000 ms后就开始订阅。这意味着在我们开始订阅之前,主题已经发出了5个值。当我们创建主题时,我们指定要存储最大2值,但不再存储100 no。这意味着,在1000 ms之后,当订阅者B开始订阅时,当主题每200 ms发出值时,它只会收到1个值。

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

https://stackoverflow.com/questions/53035833

复制
相关文章

相似问题

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