【发布时间】:2019-08-04 01:01:08
【问题描述】:
我有两个系列:人物和宠物。每个宠物都有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; 在订阅完成之前被触发?
【问题讨论】:
-
因为您的
getPetsByPersonId可能是异步的,因此您对getPetsByPersonId().subscribe的调用中的代码可能要到this.persons = personsWithPets之后才会返回值。subscribe被调用,只是里面的代码在服务返回值之前不会运行。它确实与嵌套的 observables 无关 -
有什么建议可以让它工作吗?
标签: javascript angular observable subscription angular2-observables