我想创建一个函数,该函数返回带有我创建的带有多个可观察对象的列表的可观察对象。我认为我离解决方案非常近,因为调试器仅在显示列表之前停止了一步。 这是我的代码: 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文件停止调用该服务。
我该怎么办?
答案 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])));
}));
}