我想在Angular中实现缓存。我有两种方法GetAll()和GetById(id:number,如下所示。
对于GetAll(),我实现了Cache,并且工作正常。这是实现
private cache$: Observable<any>;
getAll() {
if (!this.cache$) {
this.cache$ = this.getAll().pipe(
shareReplay(1)
);
}
return this.cache$;
}
现在,我想基于缓存实现,并且我有很多ID。如何根据ID进行缓存。
getById(id: number) {
if (!this.cache$) {
this.cache$ = this.getById(id).pipe(
shareReplay(1)
);
}
return this.cache$;
}
很显然,我不想基于Id预先创建cache $。
我该怎么做呢?
答案 0 :(得分:1)
您可以创建一个词典,以按ID保留所有缓存的可观察对象:
cacheMap = {}
getById(id: number) {
if (!this.cacheMap[id]) {
this.cacheMap[id] = ...
}
return this.cacheMap[id];
}