【问题标题】:Rxjava2 combine multiple operationsRxjava2 组合多个操作
【发布时间】:2019-03-23 11:15:49
【问题描述】:
例如,如果我有 3 个功能
Completable requestLogin()
Single hasProjects()
Completable createDefaultProject()
我如何将它们组合在一个请求中
requestLogin() > onComplete > hasProjects() > onSuccess > if(!hasProjets) >createDefaultProject()
有可能吗?如果出现错误怎么办?
【问题讨论】:
标签:
java
android
rx-java2
rx-android
【解决方案1】:
这就是您使用 Rx 的原因之一。一种可能是:
requestLogin()
.andThen(
hasProjects()
.filter(value -> !value)
.flatMapCompletable(value -> createDefaultProject()))
.subscribe(() ->{}, throwable -> {
// All errors will end up here
});
我们请求登录,一旦完成,我们会检查是否有项目。如果不是,filter 将不会终止创建默认项目的流。如果有项目,则不创建默认项目。
如果在此过程中出现任何错误,将调用onError 方法,您可以在那里处理错误。