【发布时间】:2022-01-07 14:18:54
【问题描述】:
我有一个 observable 来获取 users,然后我想通过 API 调用为每个用户获取 roles,然后将所有数据组合到一个对象数组中进行显示。
我已经到了这一点,但我认为必须有一种方法可以让我将角色调用与流中的用户结合起来,而不必订阅然后 combineLatest:
this.getAllUsersParams$
.pipe(
switchMap(params => this.userFacadeService.sysadminGetAllUsers(params)),
map(allUsers => {
const rolesCalls: Observable<UserRoles[]>[] = [];
allUsers.users.forEach(user => {
rolesCalls.push(this.userFacadeService.getUserRoles(user.id));
});
return { allUsers, rolesCalls };
})
)
.subscribe(data => {
combineLatest(data.rolesCalls)
.pipe(
map(userRoles => {
const userListVM: UserListVM[] = data.allUsers.users.map((user, i) => {
return {
...user,
roles: userRoles[i],
};
});
return { userListVM, total: data.allUsers.total };
})
)
.subscribe(data => {
// consume data
});
})
【问题讨论】:
标签: javascript angular rxjs observable