Rxjava2结合多种操作

时间:2019-03-23 11:15:50

标签: java android rx-java2 rx-android

例如,如果我有3个功能

Completable requestLogin()

Single hasProjects()

Completable createDefaultProject()

我如何在单个请求中将它们组合在一起

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

有可能吗?以及发生错误时会发生什么?

1 个答案:

答案 0 :(得分:2)

这是您使用Rx的原因之一。一种可能是:

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

我们请求登录,登录完成后,我们将检查是否有项目。如果不是,则filter将不会终止创建默认项目的流。如果有项目,则不会创建默认项目。

如果在执行过程中出现任何错误,将调用onError方法,您可以在那里处理错误。