RxJs:如何返回可观察的<;T>;从可观察的角度<;T[]>;?

RxJs:如何返回可观察的<;T>;从可观察的角度<;T[]>;?,rxjs,observable,Rxjs,Observable,我正在调用一个返回列表的web服务。我想在一个方法中返回该列表中的一项。本质上,当某个函数请求CollectorSueBase的实例时,我希望检索所有实例,缓存它们并返回请求的实例。但我不知道怎么做。 这是我的密码: public getByID(collectorID: string, id: string): Observable<CollectorIssueBase> { return this.getAllMinimized(collectorID).pipe(

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

  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;
          })
      );
  }
公共getByID(collectorID:string,id:string):可观察{ 返回此.getAllMinimized(collectorID).pipe( 单个(项目=>{ var item=items.find(i=>i.ID==ID); 退货项目; }) ); }
  • 编译器不断抱怨“CollectorSueValue[]类型的参数不能赋值给CollectorSueValue类型的参数”,这会立即告诉我仍在返回数组
  • 返回给订阅函数的值实际上是一个数组

  • 那么我做错了什么呢?“single”似乎是正确的运算符…我用错了吗?

    single callback从每个可观察的勾号中提取
    CollectoriseValue[]
    形式。如果要更改
    CollectoriseValue[]
    collectorisuevalue
    我建议使用filter和map。filter将过滤空数组,map将
    collectorisuevalue
    的非空数组转换为
    collectorisuevalue

    e、 g:

    .pipe(
    过滤器(arr=>arr.length>0),
    映射(arr=>arr.find(…),