Пытаюсь освоить работу с RxJava + retrofit2 + kotlin.
Как в этом участвует Observable в общем разобрался, даже научился объединять результаты 2-3 параллельных запросов по итогу выполнения всех с помощью Observable.zip, НО как похожим образом выполнить более 3 параллельных запросов не могу понять.
В исходном коде класса Observable есть метод
static
но он не работает как
static
в случае с тремя Observable на вход и Function3<*,*,*,*>.
Старался уже сделать первые три запроса с помощью zip, потом flatMap и тд, но всё не выходит. Чтение документации и примеров не помогают повернуть к нужному направлению. Смотрел в сторону Observable.combineLatest, но пришел к выводу (может ошибочному), что метод вернет результат первого выполнившегося Observable.
Если в целом, что я хочу:
У меня есть 4 метода, которые возвращают Observable:
this.orderRepository.getStatuses():Observable
this.orderRepository.getOrders():Observable
this.userRepository.getUsers():Observable
this.orderRepository.getTypes():Observable
Подскажите, пожалуйста, как я должен скомпоновать эти методы, чтобы они выполнились параллельно, и в конце получить результат выполнения всех 4 методов в одном месте?
Мои стыдливые попытки ниже. Это уже что-то испорченное, но я вообще не понимаю, что я должен сделать с 4 Observables, чтобы их всех в одном месте и вернуть в UI. + уже запутался с flatMap, map и так далее...
override fun buildUseCaseObservable(params: Params): Observable
return Observable.zip(
this.userRepository.getUsers(100, 1, ApiUserFilter(isManager = true)),
this.orderRepository.getOrderStatuses(),
this.orderRepository.getOrderTypes(),
Function3
}
Ответ
Zip для четырех observable можно написать так:
Observable.zip
Комментариев нет:
Отправить комментарий