#javascript #angular #rxjs #frontend
#javascript #угловой #rxjs #интерфейс
Вопрос:
Я новичок в Angular, поэтому столкнулся с проблемой. Как взаимодействовать с вложенным http-запросом в Angular с помощью RxJS?
.pipe(
map((res): Collection => ({
id: res.id,
name: res.name,
description: res.description,
tracks: res.tracks.items.map(track => this.trackService.fetchTrack(track.id)) //?
})
),
)
Комментарии:
1. Вы можете найти вдохновение здесь
Ответ №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(...)
Комментарии:
1. Большое вам спасибо, это сработало для меня, но единственное, что мне нужно было сделать, это заменить (res: Collection) на (res): Collection
2. Не уверен, почему
(res: Collection)
это не сработает, но, тем не менее, я обновил ответ, чтобы отразить ваши изменения.