Angular/RxJS在Observable内部等待HTTP响应



我有以下情况。我有一个http请求,它返回一个具有以下数据结构的可观察对象

[
{
firstName,
secondName,
petId
}
]

不,我必须遍历这个数组,对于每个人,我必须为宠物做一个请求。到目前为止还不是问题。问题是我想让数据完全按照它来自第一个响应的顺序。

我的想法到目前为止:

this.personService.getPersonData().subscribe(data => {
data.forEach(personObj =>
this.petService.getPetData(personObj.petId)
.subscribe(petData => 
this.personPetData.push({...personObj, petData: petData}))
);
});

但是当我这样做的时候,顺序总是不同的。

我将非常感谢你的回答

尝试:

this.personService.getPersonData().pipe(
switchMap(data =>
forkJoin(data.map(personObj => 
this.petService.getPetData(personObj.petId).pipe(map(pet => ({ ...personObj, petData: pet}))),
)),
),
)

最新更新