Rxjava2 объединяет несколько операций - PullRequest
0 голосов
/ 23 марта 2019

Например, если у меня есть 3 функции

Completable requestLogin()

Single hasProjects()

Completable createDefaultProject()

Как я могу объединить их в одном запросе

requestLogin () > onComplete > hasProjects () > onSuccess> if (! HasProjets) > createDefaultProject ()

Возможно?и что будет в случае ошибок?

1 Ответ

2 голосов
/ 24 марта 2019

Это одна из причин, по которой вы используете Rx. Одна возможность может быть:

requestLogin()
   .andThen(
         hasProjects()
            .filter(value -> !value)
            .flatMapCompletable(value -> createDefaultProject()))
   .subscribe(() ->{}, throwable -> {
         // All errors will end up here
     });

Мы запрашиваем логин и после его завершения проверяем, есть ли проекты. Если нет, filter не прервет поток, который создает проект по умолчанию. Если есть проекты, то проект по умолчанию не создается.

Если по пути возникнет какая-либо ошибка, будет вызван метод onError, и вы сможете обработать ошибки там.

...