如何将 Observable<Observable<any>> 展平为 Observable<any>?

超级用户

我试图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(你可以使用concatMapswitchMap在本例中为好)。

return this.cache.get<MyType, number>(storageName, version)
  .mergeMap(cached => {
    if (cached !== undefined) {
      return Observable.of(cached);
    }
    return this.http.get(...);
  })
  ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Observable <Observable <Cursor >>展平为Observable <Cursor>

来自分类Dev

如何创建一个 Observable<any[]>?

来自分类Dev

如何在角度 6 中将 any[] 转换为 observable<any[]>

来自分类Dev

输入 'Observable<any[] | Observable<any[]>>' 不可分配给类型 'Observable<any[]>'

来自分类Dev

如何将空的 JSON 数据推送到 Observable<any[]> angular 2 类型的数组字段

来自分类Dev

如何从Observable <Array <any >>中删除特定元素

来自分类Dev

如何在 HTML 中绑定 Observable<any> 单个类对象

来自分类Dev

在HTML中显示Observable <any []>返回类型

来自分类Dev

如何将Observable <OnTextChangeEvent>与Observable <OnCheckedChangeEvent>结合?

来自分类Dev

RXJS如何将Observable <T []>转换为Observable <T>

来自分类Dev

如何将hot observable和single转为cold observable

来自分类Dev

angular2的Observable属性'debouceTime'在'Observable <any>'类型上不存在

来自分类Dev

角拦截器-类型'Observable <未知>'不能分配给类型'Observable <HttpEvent <any >>'

来自分类Dev

输入 '(token: string) => Observable<{ headers: HttpHe aders; }>' 不可分配给类型 'Observable<any>'

来自分类Dev

在另一个Observable的数组项中映射一个Observable,将结果展平

来自分类Dev

Observable <Any>触发TSLint'属性不存在'

来自分类Dev

类型“Observable<any>”上不存在属性“interval”

来自分类Dev

类型 'Observable<{}[]>' 不能转换为类型 'AngularFireList<any[]>'

来自分类Dev

rxjs6 过滤器 Observable<Array<any>>

来自分类Dev

类型'Observable <Promise <any >>'不可分配给类型'Observable <myRec []>'。缺少类型“ Promise <any>”

来自分类Dev

类型“ Observable <any>”不可分配给类型“ StoresSummaryResults”。类型“ Observable <any>”中缺少属性“ Data”

来自分类Dev

如何将Observable转换为FirebaseObjectObservable

来自分类Dev

如何将项目附加到 Observable

来自分类Dev

如何从Observable <List <Type >>创建Observable <Type>

来自分类Dev

如何用新的observable替换http observable?

来自分类Dev

在Rxjs中,如何展平或合并同时包含普通类型和Observable的流?

来自分类Dev

从 Observable 的结果返回 Observable

来自分类Dev

将Observable分成窗口

来自分类Dev

如何测试返回的Observable是否为EMPTY

Related 相关文章

  1. 1

    将Observable <Observable <Cursor >>展平为Observable <Cursor>

  2. 2

    如何创建一个 Observable<any[]>?

  3. 3

    如何在角度 6 中将 any[] 转换为 observable<any[]>

  4. 4

    输入 'Observable<any[] | Observable<any[]>>' 不可分配给类型 'Observable<any[]>'

  5. 5

    如何将空的 JSON 数据推送到 Observable<any[]> angular 2 类型的数组字段

  6. 6

    如何从Observable <Array <any >>中删除特定元素

  7. 7

    如何在 HTML 中绑定 Observable<any> 单个类对象

  8. 8

    在HTML中显示Observable <any []>返回类型

  9. 9

    如何将Observable <OnTextChangeEvent>与Observable <OnCheckedChangeEvent>结合?

  10. 10

    RXJS如何将Observable <T []>转换为Observable <T>

  11. 11

    如何将hot observable和single转为cold observable

  12. 12

    angular2的Observable属性'debouceTime'在'Observable <any>'类型上不存在

  13. 13

    角拦截器-类型'Observable <未知>'不能分配给类型'Observable <HttpEvent <any >>'

  14. 14

    输入 '(token: string) => Observable<{ headers: HttpHe aders; }>' 不可分配给类型 'Observable<any>'

  15. 15

    在另一个Observable的数组项中映射一个Observable,将结果展平

  16. 16

    Observable <Any>触发TSLint'属性不存在'

  17. 17

    类型“Observable<any>”上不存在属性“interval”

  18. 18

    类型 'Observable<{}[]>' 不能转换为类型 'AngularFireList<any[]>'

  19. 19

    rxjs6 过滤器 Observable<Array<any>>

  20. 20

    类型'Observable <Promise <any >>'不可分配给类型'Observable <myRec []>'。缺少类型“ Promise <any>”

  21. 21

    类型“ Observable <any>”不可分配给类型“ StoresSummaryResults”。类型“ Observable <any>”中缺少属性“ Data”

  22. 22

    如何将Observable转换为FirebaseObjectObservable

  23. 23

    如何将项目附加到 Observable

  24. 24

    如何从Observable <List <Type >>创建Observable <Type>

  25. 25

    如何用新的observable替换http observable?

  26. 26

    在Rxjs中,如何展平或合并同时包含普通类型和Observable的流?

  27. 27

    从 Observable 的结果返回 Observable

  28. 28

    将Observable分成窗口

  29. 29

    如何测试返回的Observable是否为EMPTY

热门标签

归档