Я новичок в Rx JS, поэтому даже не уверен, правильно ли я назвал вопрос.
Чтобы объяснить, чего я пытаюсь достичь: у меня есть одна конечная точка API, которая приводит к массив объектов с идентификаторами. Затем я буду вызывать другую конечную точку API с каждым идентификатором, который я получил в массиве, во многих вызовах. Я хочу, чтобы данные, получаемые подписчиком первого API, уже включали ответ на второй вызов API.
StackBlitz: https://stackblitz.com/edit/rxjs-u45wvq
в настоящее время, значения thatThing
являются наблюдаемыми - и я хочу, чтобы они были полученными объектами.
Edit
Мне удалось добиться того, что я хотел, но, на мой взгляд, это выглядит грязно - поскольку решение использует класс Promise
для его решения.
https://stackblitz.com/edit/rxjs-d5ywen
Я блуждаю, если есть Rx JS способ сделать то же самое:
const source = fetchApi1().pipe(
map(x => {
return new Promise((yes, no) => {
const s = x.array.map(m => fetchApi2(m.id))
forkJoin(...s).subscribe(api2 => {
x.array.forEach((row, i) => {
row.thatThing = api2[i]
})
yes(x)
})
})
}),
switchMap(x => from(x))
);