Angular rxjs如何使缓存无效?

时间:2018-06-20 21:26:07

标签: angular rxjs

我正在使用

private readData = (api: string): any => {
        if (!this.cacheService.readFromCache(api)) {
            this.cacheService.writeToCache(api, this.request(api, RequestMethod.Get)
                .map(response => {
                    return response;
                })
                .publishReplay(1)
                .refCount());
        }
        return this.cacheService.readFromCache(api);
    }

这段代码存储了我的api调用响应。这很好用,但是我想在自上次实际http调用以来的一定时间后使缓存过期。否则,用户将始终看到“过时的”缓存。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

与此类似吗?

const cacheStore=()=>{
let _cache={data:'init'}
const store=Rx.Observable.create(obs=>{
  obs.next(_cache)
})

const update=(cache)=>{
  _cache=Object.assign({},cache)
}
return {store,update}
}

const cache=cacheStore()
cache.store.subscribe(console.log)
cache.update({data:"new data"})
cache.store.subscribe(console.log)