【问题标题】:RxJs: How to return an Observable<T> from an Observable<T[]>?RxJs:如何从 Observable<T[]> 返回 Observable<T>?
【发布时间】:2019-08-05 22:28:37
【问题描述】:

我正在调用一个返回列表的 Web 服务。我想以一种方法从该列表中返回一个项目。本质上,当某些函数请求 CollectorIssueBase 的实例时,我想检索所有这些实例,缓存它们并返回请求的实例。但我不知道该怎么做。 这是我的代码:

  public getByID(collectorID: string, id: string): Observable<CollectorIssueBase> {
    return this.getAllMinimized(collectorID).pipe(
        single(items => {
            var item = items.find(i => i.ID == id);
            return item;
          })
      );
  }
  1. 编译器不断抱怨“'CollectorIssueValue[]' 类型的参数不可分配给 'CollectorIssueValue' 类型的参数,这立即告诉我我仍在返回一个数组。
  2. 返回给订阅函数的值确实是一个数组。

那么我做错了什么? “single”似乎是合适的运算符……我用错了吗?

【问题讨论】:

    标签: rxjs observable


    【解决方案1】:

    单个回调采用CollectorIssueValue[] 形成每个可观察的滴答声。如果您想将CollectorIssueValue[] 更改为CollectorIssueValue,我建议使用过滤器和映射。 filter会过滤空数组,map会将CollectorIssueValue的非空数组转化为CollectorIssueValue

    例如:

    .pipe(
      filter(arr => arr.length > 0),
      map(arr => arr.find(...),
    

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2017-12-29
      • 1970-01-01
      • 2021-12-01
      • 2016-11-05
      相关资源
      最近更新 更多