首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角http请求的级联

问角http请求的级联
EN

Stack Overflow用户
提问于 2017-01-17 16:25:37
回答 1查看 2.4K关注 0票数 2

我面临以下情况。有一个前端应用程序,构建与角(2),这是连接的休息后端可通过http访问。一旦用户登录(使用电子邮件和pwd),后端将返回与用户相关的数据,特别是与用户关联的id (让我们调用此userId)和他所在区域的代码(让我们称之为regionId)。通过userId,我可以查询后端以获得用户所属的关联组ID (让我们称之为affinityId)。最后,使用affinityId和regionId,我可以从后端检索折扣,以应用于用户。

换句话说,后端提供了3个API:

  • getUserData(电子邮件: string,pwd: string):返回所有用户数据,包括userId和regionId
  • getAffinityPerUser(userId: number):返回一个代表affinityId的数字
  • getDiscount(regionId: number,affinityId: number):返回一个表示折扣的数字

如果我通过角http客户端访问这些API,我可以构建以下API(类似于Javascript伪代码)

  • getUserData(电子邮件: string,pwd: string):可观察(<{userId,regionId,.}>)
  • getAffinityPerUser(userId: number):可观测的()
  • getDiscount(regionId: number,affinityId: number):可观测的()

我想知道,我是否可以结合使用RxJs操作符,以获得折扣信息,我正在寻找这样的观测数据。

我可以通过switchMap连接前两个APIs以获得affinityId,如下所示

代码语言:javascript
复制
this.getUserData(email, pwd)
     .switchMap(userData => this.getAffinityPerUser(userData.userId))

但是,我不知道如何将affinityId可观测(由getAffinityPerUser返回)与userData可观测(由getUserData返回)结合起来,以便能够同时拥有affinityId和regionId,这是我需要调用的getDiscount API。

任何帮助都是非常感谢的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-17 16:49:20

您可以像这样将所有操作组合在一起:

代码语言:javascript
复制
this.getUserData(email, pwd)
     .switchMap(userData => this.getAffinityPerUser(userData.userId)
                                .map(affinity => [affinity, userData.regionId])) // return a tuple combining required elements
     .switchMap(([affinity, regiondId) => this.getDiscount(regionId, affinity)) // use destructuration to extract the 2 elements of the tuple
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41702140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档