例如,如果我有3个功能
Completable requestLogin()
Single hasProjects()
Completable createDefaultProject()
我如何在单个请求中将它们组合在一起
requestLogin()>
onComplete >
hasProjects()>
onSuccess >
if(!hasProjets)>
createDefaultProject()
有可能吗?以及发生错误时会发生什么?
答案 0 :(得分:2)
这是您使用Rx的原因之一。一种可能是:
requestLogin()
.andThen(
hasProjects()
.filter(value -> !value)
.flatMapCompletable(value -> createDefaultProject()))
.subscribe(() ->{}, throwable -> {
// All errors will end up here
});
我们请求登录,登录完成后,我们将检查是否有项目。如果不是,则filter
将不会终止创建默认项目的流。如果有项目,则不会创建默认项目。
如果在执行过程中出现任何错误,将调用onError
方法,您可以在那里处理错误。