RxJs:如何从Observable <t []>返回Observable <t>?

时间:2019-03-14 21:44:28

标签: rxjs observable

我正在调用返回列表的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. 返回给订阅函数的值确实是一个数组。

那我做错了什么? “单”似乎是要使用的适当运算符...我使用错了吗?

1 个答案:

答案 0 :(得分:1)

单个回调以CollectorIssueValue[]的形式出现在每个可观察到的刻度中。如果要将CollectorIssueValue[]更改为CollectorIssueValue,建议使用过滤器和映射。过滤器将过滤空数组,而映射会将CollectorIssueValue的非空数组转换为CollectorIssueValue

例如:

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