RXAndroid / RXJava2: объедините три запроса на модернизацию и повторите тот же процесс снова. - PullRequest
1 голос
/ 30 мая 2020

Я начал изучать Rx Android и понял подход реактивного программирования и возможности различных операторов, таких как flatmap, map и xmap.

У меня следующая ситуация, у меня есть список отчетов, в которых говорится List<Reports> (получено во время выполнения). Мне нужно сделать 3 вызова API для отчета в последовательности (API 1 -> API 2 -> API 3) и повторить тот же процесс для всех отчетов в последовательности.

Пример : для отчетов A, B, C, и D в List<Reports> выполните 3 вызова API для A, а затем для B и затем для C, а затем для D. Если какой-либо из 3 вызовов API не удается создать отчет, остановите оставшийся вызов и перейдите к следующему отчету. Здесь размер List<Reports> известен только во время выполнения.

Как я могу использовать RX java для решения этой проблемы?

1 Ответ

0 голосов
/ 30 мая 2020

Предположим, у вас есть 4 вызова API, операция combineLatest в идеале должна возвращать тип Reports.

Observable<Report> result = Observable.combineLatest(
                apiA,
                apiB,
                apiC,
                apiD,
                (respA, respB, respC, respD) -> respA + respB + respC + respD
        )
                .subscribeOn(
                ....

Чтобы иметь возможность достичь последовательного порядка, вам нужно будет заключить их в flatMap операция:

Observable o = Observable.just(.....)// your initial data
o
  .flatMap(value -> doCombineLatestOperation(value))
  .subscribe(resp -> //Deal with data);

Надеюсь, что это поможет.

...