Angular 4 caching



问题:

  1. 我必须显示大量数据

  2. 使用可以更改计数的分页(用户可以选择每页显示10/20/50(

  3. 正在尝试使用以下链接的rxjshttps://blog.thoughtram.io/angular/2018/03/05/advanced-caching-with-rxjs.html

  4. 但我使用这个有两个问题。。。。

    4.1.这给出了最新的数据,但我需要显示该特定页面的数据,并在我再次返回时显示相同的数据

    4.2.我在顶部使用搜索,这要求我使用整个数据,但由于这种缓存是分步骤获取数据的,所以当用户在从后端服务提取完整数据之前进行搜索时,我会遇到问题。。。

请建议解决此问题的最佳方式。。。。

RXJS受试者有3种不同类型的提要,就而言

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-它可以缓存指定数量的排放。任何订阅者都将在订阅时获得所有缓存值。

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毫秒我们开始发射主题值,每200毫秒一次。订阅服务器A将每隔主体发出的值。我们开始订阅订阅服务器B,但我们在1000毫秒后执行此操作。这意味着5个值在我们开始订阅之前,Subject已经发出了。当我们创建Subject时,我们指定要存储最大值2值,但不再超过100ms。这意味着在1000ms之后,当订阅服务器B开始订阅时,它将只收到1个值作为受试者每200ms发射一次数值。

最新更新