角度:从另一个创建一个可观察列表并检索它

时间:2019-05-22 14:58:02

标签: angular rxjs observable

我想创建一个函数,该函数返回带有我创建的带有多个可观察对象的列表的可观察对象。我认为我离解决方案非常近,因为调试器仅在显示列表之前停止了一步。 这是我的代码: ts

this.carService.getEveryCar().subscribe((response) => {
    this.cars = response; 
});

服务:

getEveryCar(): Observable<any> {
    let cars = [];
    this.getCars()
      .subscribe(response => {
        cars = response.list;
        this.getOneMoreCar.subscribe(
          response =>{
              cars = response.list;
              return of(cars)
        })
      }
   return of(cars);
}

当我调试时,我得到的汽车被宣告为空,直到汽车阵列被填满为止,但是我的ts文件停止调用该服务。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您不应在该服务中进行任何订阅。这是链接可观察对象的最佳方法。

import { of, concatMap } from "rxjs/operators";
...
getEveryCar(): Observable<any> {
    let cars = [];
    return this.getCars()
      .pipe(concatMap(response => {
          cars = response.list;
          return this.getOneMoreCar()
                     .pipe(concatMap(response => of([cars, response.list])));
      }));
}