Ответ
Для маппинга нескольких запросов можно использовать zip или combine из RxJava/Kotlin Flow.
Пример с zip (RxJava):
Observable.zip(
api.getUser(),
api.getPosts(),
api.getComments(),
{ user, posts, comments -> Triple(user, posts, comments) }
).subscribe { (user, posts, comments) ->
// обработка данных
}
Пример с combine (Kotlin Flow):
combine(
flow1, flow2, flow3
) { data1, data2, data3 ->
Triple(data1, data2, data3)
}.collect { (d1, d2, d3) ->
// обработка
}
Важно:
zipждёт завершения всех запросов.combineэмитит при каждом обновлении любого из потоков.- Для отмены при ошибке используй
flatMap+onError.