gpt4 book ai didi

javascript - Angular 7 嵌套可观察量

转载 作者:行者123 更新时间:2023-11-28 14:21:17 26 4
gpt4 key购买 nike

我有两个收藏:人和宠物。每只宠物都有 personId。我的目标是让所有人和每个人都在单个 json 中添加他/她的宠物。到目前为止我所做的是:

this.personService.getPersions().subscribe(persons => {
const personsWithPets = persons.flatMap(person => this.petService.getPetsByPersonId(person._id)
.subscribe(petsData => {
person.pets = petsData;
return person;
}, (err) => {
console.log(err);
}));
this.persons = personsWithPets; // This is fired before previous subscribe
}, (err) => {
console.log(err);
});

我做错了什么?为什么 this.persons = PersonsWithPets; 在订阅完成之前被触发?

最佳答案

已更新添加的评论

另一个:stackblitz

this.service.getPersons().pipe(switchMap((per:any[])=>{
//create an array of observables
const obs=per.map(per=>this.service.getPet(per.id));
//call all of them in forkjoin
return forkJoin(obs).pipe(map(pets=>
//pets is an array, in pets[0] is the response of getPet(1),
//in pets[1] is the response of getPet(2)
pets.map((pet,i)=>{
return {
...per[i], //all the properties of the person
pets:pet //+ in pets an array with the pets of the person
}
})
))
})).subscribe(res=>this.res=res)

关于javascript - Angular 7 嵌套可观察量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com