我正在编写一个Angular 应用程序,并设置一个系统,在该系统中,NGRX效果将向服务请求数据.
更重要的是,这项服务将做两件事:
- 判断本地缓存(SQLite)中是否有请求的数据,以及
- 请联系API获取最新数据
我希望定义此服务的可观察响应,它将只发出API的响应(如果是第一个/本地缓存未命中),或者按该顺序发出本地然后发出API.我已经设想了以下两个场景:
Scenario 1 (API is first/cache miss)个
API ---1
CACHE ---------2
MERGE ---1
Scenario 2 (Cache hit)个
API ---------1
CACHE ---2
MERGE ---2-----1
我正在考虑创建一个主题,然后触发两个调用,并在API响应时完成主题(无论是成功响应还是错误响应).
伪代码:
const subject = new Subject();
this.cache.getData().then(res => subject.next(res)).catch(err => subject.error(err));
this.api.getData().then(res => subject.next(res)).catch(err => subject.error(err)).finally(() => subject.complete());
return subject.asObservable();
但我想知道是否有更干净的解决方案来实现我想要实现的目标?非常感谢您提供的任何意见.