【问题标题】:Angular - Nested API calls with iterationAngular - 带有迭代的嵌套 API 调用
【发布时间】:2017-07-17 11:57:51
【问题描述】:

有没有更好的方法来实现这一点(让所有用户都拥有他们的照片):

this.authHttp.get(this.ApiUrl+'users')
.map(res => res.json())
    .subscribe(users => {
        for (let user of users) {
            this.authHttp.get(this.ApiUrl+'users/'+user.id+'/photos')
            .map(res => res.json())
            .subscribe(photos => {
                user['photos'] = photos;
                this.items.push(user);
            })
        }
    });

也许使用 mergeMap ?

感谢您的建议

朱利安

【问题讨论】:

  • 是的,MergeMap 是个好主意
  • 谢谢,问题是我找不到如何使用mergeMap遍历用户。
  • 您面临的问题是什么?

标签: angular ionic-framework rxjs


【解决方案1】:

我假设 res.json() 是一个同步调用,将 json 作为对象返回,因此您可以链接它:

this.authHttp.get(this.ApiUrl+'users')
.mergeMap(res = res.json().users)
.mergeMap(
  user => this.authHttp.get(this.ApiUrl+'users/'+user.id+'/photos'),
  (user, photosRes) => { 
    user['photos'] = photosRes.json(); 
    return user; 
   }
)
.subscribe(user => this.items.push(user));

此代码示例使用 mergeMap 重载,该重载采用 mapFunc(outer,inner),因此您可以访问两者并可以根据需要将它们合并在一起。

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 2011-03-25
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2021-02-05
    • 2019-09-16
    相关资源
    最近更新 更多