在我的路由解析器之一中,我想获取通过API调用返回的动物(Animal [])的列表。对于每种动物,我都需要一个额外的api调用来获取品种名称。我尝试了这个:
return this.apiService.get('/api/v1/website/' + environment.web_id + '/useraccount/' + user.id + '/animal').pipe(
map(animals => animals.map(animalObs => {
// return animalObs;
return animalObs.pipe(
map((animal: Animal) => {
animal.ani_breed = this.breedService.get(animal.anb_id).pipe(
map(breed => {
return breed.anb_name;
})
);
return animal;
}),
);
})),
);
Run Code Online (Sandbox Code Playgroud)
但是我在编译时遇到错误:类型'Observable'不能分配给类型'string'。[2322]
我想我缺少了一些东西...请帮助!
实际的实现取决于您要按顺序还是并行运行请求,但是可以像下面这样执行示例:
this.apiService.get('/api/v1/website/' + environment.web_id + '/useraccount/' + user.id + '/animal').pipe(
mergeMap(animals => {
const animals$ = animals.map(animal => this.breedService.get(animal.anb_id).pipe(
map(breed => {
animal.ani_breed = breed;
return animal;
})
))
return forkJoin(...animals$);
}),
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
425 次 |
最近记录: |