从今天早上开始,我正在尝试解决一个非常令人头疼的问题。
我将首先解释(非常简单的)情况。
我创建了组,它由一个标题和一个成员数组组成,仅由它们的 id 字符串给出。
现在,我想显示这些组。是不是很简单?但是,我当然不想只显示成员的 ID,而是显示组用户的完整信息(例如基本上他们的名字......)。
所以,我当然有一个获取所有组的服务,以及另一个通过 ID 获取用户的服务。
在 React 中,因为我没有使用 rxjs,所以我不会有任何问题;async/awaits 和 Promise.all 可以解决问题。
但是在这里,在渲染之前尝试获取完整信息(调用 2 个服务)时会出现几个问题,例如:1.我想获取组 2.对其进行迭代 3.对组成员进行迭代 4.最终为每个成员获取它的标识。因此,例如,每个组都可以有一个 groupcompleteusers 数组,每次我从 id 获取有关用户的信息时,我都会填写它...
所以我尝试了以下方法:
- 首先我尝试使用 async/await、Promises,但由于我正在调用返回 Observables 的服务,所以我有点迷失了。
- 然后我尝试嵌套订阅。但是,我完全无法正确编写它,因为我不仅要迭代组,还要迭代 group.members (在嵌套订阅时不存在,因为组当时是一个 Observable。 ..)
因此,使用 angular 7/rxjs 6,我尝试了以下操作:
getGroups(){
this.groupsService.getGroups().pipe(
flatMap(group =>
{
for(let member of group.members){
this.userService.getUser(member);
}
}
)
).subscribe(u => this.groups = u)
}
当然,它不起作用,尤其是 group.members 当时不存在......
所以我有点卡住了。
也许有些人有线索?
谢谢!