我有以下情况。我有一个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}))),
)),
),
)