Я звоню бэкэнду, который отвечает:
[
"https://some-url.com/someData1.json",
"https://some-url.com/someData2.json"
]
Каждый JSON может иметь следующую схему:
{
"isValid": boolean,
"data": string
}
Я хочу получить массив со всеми данными, для которых isValid имеет значение true
backend.get(url)
.pipe(
mergeMap((urls: []) =>
urls.map((url: string) =>
backend.get(url)
.pipe(
filter(response => response.isValid),
map(response => response.data)
)
)
),
combineAll()
)
Когда в обоих .json для "isValid" установлено значение true, я получаю массив с обоими данными.
Но когда для одного из них для isValid установлено значение false, наблюдаемое никогда не завершается.
Я мог бы использовать mergeAll вместо объединить все, но тогда я получаю поток отдельных данных, а не сбор всех данных.
Есть ли лучший способ отфильтровать наблюдаемые?