小编Mar*_*tin的帖子

HTTP服务的反应性缓存

我正在使用RsJS 5(5.0.1)在Angular 2中缓存.它运行良好.

缓存功能的核心是:

const observable = Observable.defer(
    () => actualFn().do(() => this.console.log('CACHE MISS', cacheKey))
  )
  .publishReplay(1, this.RECACHE_INTERVAL)
  .refCount().take(1)
  .do(() => this.console.log('CACHE HIT', cacheKey));
Run Code Online (Sandbox Code Playgroud)

actualFnthis.http.get('/some/resource').

就像我说的,这对我来说非常合适.缓存从observable返回持续时间RECACHE_INTERVAL.如果在该间隔之后发出请求,actualFn()则将调用该请求.

我想弄清楚的是当RECACHE_INTERVAL到期和actualFn()被调用时 - 如何返回最后一个值.在RECACHE_INTERVAL到期和actualFn()重放之间有一段时间,observable不返回值.我想及时消除这个差距,并始终返回最后一个值.

我可以使用副作用并.next(lastValue)在等待HTTP响应返回时存储最后一个好的值调用,但这似乎很幼稚.我想使用"RxJS"方式,一种纯函数解决方案 - 如果可能的话.

caching rxjs rxjs5 angular

20
推荐指数
1
解决办法
1427
查看次数

标签 统计

angular ×1

caching ×1

rxjs ×1

rxjs5 ×1