angular - 使用外部数组展平嵌套的 Observables 而无需内部订阅 (RxJS)
问题描述
给定以下执行异步 HTTP 调用的 TypeScript 函数:
public retrieveAllMembersIdsFromGroup(groupId: string): Observable<string[]>
public retrieveMember(memberId: string): Observable<Member>
如何将其组合在一个函数中以获取所有成员(可观察)?
public retieveAllMembersFromGroup(groupId: string): Observable<Member[]>
例如,我想要这样的东西:
public retieveAllMembersFromGroup(groupId: string): Observable<Member[]> {
return this.retrieveAllMembersIdsFromGroup(groupId).pipe(
map((membersIds: string[]) => {
//some magic here to call this.retrieveMember(memberId)
return //Observable<Member[]>;
})
);
}
如果可能的话,我不想订阅retrieveAllMembersIdsFromGroup,这样就不必手动处理ID。什么是最好的解决方案?
解决方案
我不完全理解你在寻找什么魔法,但也许这对你有用?
public retrieveAllMembersFromGroup(groupId: string): Observable<Member[]> {
return this.retrieveAllMemberIdsFromGroup(groupId).pipe(
concatMap((memberId: string) => {
return this.retrieveMember(memberId);
})
);
}
请注意,我还更改了一些名称,因为它们拼写错误或语法奇怪。
推荐阅读
- javascript - 使具有匹配属性的对象加入数组
- css - 如何使用css选择表中的前2个元素
- javascript - JS:如何过滤对象属性并成为关键
- amazon-s3 - AWS APIGateway“缺少身份验证令牌”
- html - 无法弄清楚为什么下拉菜单不会与上述文本输入框对齐
- spring - SpringBoot web应用启动后如何按需创建web应用上下文
- python - 无法在python中使用OAEP解密
- coq - 我可以以某种方式堆叠隐式类型吗?
- mysql - 添加连接池后代码运行顺序错误(需要异步/等待?)
- python - 循环导入在导入 tkinter 时生成 AttributeError