我试图Observable<MyType>
通过执行以下操作来获得:
return this.cache.get<MyType, number>(storageName, version)
.map(cached => {
if (cached !== undefined) {
return cached;
}
return this.http.get<MyType>(`MyTypeGetUrl/${version}`)
.map(m => m)
.do(result => {
this.cache.put<MyType>(storageName, result).first().subscribe();
});
}).publishReplay(1).refCount();
cache.get
返回Observable<MyType>
并http.get<T>
返回Observable<T>
。
我想检查一个对象的缓存,如果它不存在,从服务器获取它,缓存它并返回它。
但是,如果该对象存在于缓存中,则返回Observable<MyType>
,但如果需要去服务器,则返回Observable<Observable<MyType>>
。
如何将服务器的结果展平,以便我可以返回一个 Observable,仅在必须时调用服务器?
而不是map
使用mergeMap
并将缓存的结果包装到一个 Observable 中。在这两种情况下,它会经历mergeMap
这样它会解开Observable<MyType>
到MyType
(你可以使用concatMap
或switchMap
在本例中为好)。
return this.cache.get<MyType, number>(storageName, version)
.mergeMap(cached => {
if (cached !== undefined) {
return Observable.of(cached);
}
return this.http.get(...);
})
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句