【发布时间】:2017-06-01 19:28:42
【问题描述】:
我正面临以下情况。 有一个使用 Angular(2) 构建的前端应用程序,它与可通过 http 访问的 REST 后端连接。 一旦用户登录(使用电子邮件和密码),后端返回与用户相关的数据,特别是与用户关联的 id(我们称之为 userId)和所在区域的代码他活着(我们称之为 regionId)。 通过userId,我可以查询Back End,获取用户所属的亲和组ID(我们称之为affinityId)。 最后,使用 affinityId 和 regionId 我可以从后端检索 discount 以应用到用户。
换句话说,后端提供了 3 个 API:
- getUserData(email: string, pwd: string) : 返回所有用户数据,包括userId和regionId
- getAffinityPerUser(userId: number) : 返回一个代表 affinityId 的数字
- getDiscount(regionId: number, affinityId: number) : 返回一个代表折扣的数字
如果我通过 Angular http 客户端访问这些 API,我可以构建以下 API(在一种 Javascript 伪代码中)
- getUserData(email: string, pwd: string) : Observable()
- getAffinityPerUser(userId: number) : Observable()
- getDiscount(regionId: number, affinityId: number) : 可观察()
我想知道我是否可以使用 RxJs 运算符组合此类 Observable 以获得我正在寻找的 折扣 信息。
我可以通过 switchMap 连接前 2 个 API 以获取 affinityId 类似于
this.getUserData(email, pwd)
.switchMap(userData => this.getAffinityPerUser(userData.userId))
但是我不知道如何将 affinityId Observable(由 getAffinityPerUser 返回)与 userData Observable(由 getUserData 返回)结合起来,以便能够同时拥有 affinityId 和 regionId 我需要调用 getDiscount API。
非常感谢任何帮助
【问题讨论】:
-
我相信您需要检测并观察您的
affinityId和regionId何时可从将进行最后一次Http 调用以检索discount的服务可用。因此,您可以在用户登录时观察这些调用,然后在您拥有所有数据时进行最后一次调用。
标签: angular rxjs angular2-http