首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTTP服务的反应式缓存

HTTP服务的反应式缓存
EN

Stack Overflow用户
提问于 2017-02-17 01:08:30
回答 1查看 1.6K关注 0票数 20

我正在使用RsJS 5 (5.0.1)在Angular 2中缓存。它工作得很好。

缓存函数的核心是:

代码语言:javascript
复制
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));

actualFn就是this.http.get('/some/resource')

就像我说的,这对我来说非常有效。在RECACHE_INTERVAL的持续时间内,从可观察对象返回缓存。如果在该间隔之后发出请求,则将调用actualFn()

我想弄清楚的是RECACHE_INTERVAL什么时候过期,什么时候调用actualFn() --如何返回最后一个值。在RECACHE_INTERVAL过期和重放actualFn()之间有一段时间,可观察对象没有返回值。我希望在时间上消除这种差距,并始终返回最后一个值。

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-19 07:25:42

如果使用普通的rxjs,几乎任何复杂的逻辑都会很快失控。我宁愿从头开始实现自定义cache操作符,您可以使用此gist作为示例。

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

https://stackoverflow.com/questions/42280438

复制
相关文章

相似问题

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