【问题标题】:Nested http request in RxJSRxJS 中的嵌套 http 请求
【发布时间】:2020-11-13 11:40:25
【问题描述】:

我是 Angular 的初学者,所以我遇到了挑战。如何使用 RxJS 与 Angular 中的嵌套 http 请求进行交互?

.pipe(
    map((res): Collection => ({
            id: res.id,
            name: res.name,
            description: res.description,
            tracks: res.tracks.items.map(track => this.trackService.fetchTrack(track.id)) //?
        }) 
    ),
)

【问题讨论】:

标签: javascript angular rxjs frontend


【解决方案1】:

您需要使用switchMap 从外部可观察对象映射到内部。并且看到您有多个来自数组的 HTTP 调用,您可以使用 forkJoin 并行触发它们。

试试下面的

outerObservable().pipe(
  switchMap((res): Collection => {
    forkJoin(res.tracks.items.map(track => this.trackService.fetchTrack(track.id))).pipe(
      map(tracks => ({
        id: res.id,
        name: res.name,
        description: res.description,
        tracks: tracks
      }))
    )
  })
).subscribe(...)

【讨论】:

  • 非常感谢它对我有用,但我必须做的一件事是将 (res: Collection) 替换为 (res): Collection
  • 不知道为什么(res: Collection) 不起作用,但我已经更新了答案以反映您的更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2016-09-14
  • 1970-01-01
相关资源
最近更新 更多