首页 > 解决方案 > RxJS 可观察合并

问题描述

假设我有一个带有两个可能的 GET 请求的 REST 服务器。
一个像这样: /allItems另一个:/{itemId}/picture
第一个将我服务器上的所有存储项目作为一个数组(仅一次)返回,其中每个都有一个 Id。
对于他们每个人,我想请求他们各自的图片并将其与他们匹配。
像这样的东西:

this.http.get('/allItems').map(itemArray => {
   itemArray.forEach(item => {
       this.http.get('/' + item.id + '/picture')
                .subscribe(pic => item.pic = pic)
   return itemArray
 }
})

最后,我想返回一个Observable,它发出 item-array 并映射了它们各自的图片,以便其他函数可以访问完整的数据。

可能值得一提:我正在使用 Angular/Typescript。

标签: angularrxjs

解决方案


@emkay 我重构了你的代码。我认为它看起来更好。@mortom123 想要替换关键图片的对象值。

this.http.get('/allItems')
 .pipe(
  .mergeMap((itemArray) => from(itemArray))
  .mergeMap((item) => this.http.get(`/${item.id}/picture`))
   .pipe(
    map((picture) => (
      {
        ...item,
        pic: picture
      })
 ).subscribe((data) => console.log(data));

推荐阅读