如何根据条件从Completable
开始连锁?
我在下面的getThings()
中有可用的代码,但是根据我所看到的示例,它感觉像不正确地使用RxJava。在此示例中,downloadThings()
和getCachedThings()
的内容无关紧要,但是返回类型无关。
fun downloadThings(): Completable {
...
}
fun getCachedThings(): Flowable<List<Task>> {
...
}
fun getThings(): Flowable<List<Task>> {
return if (condition) {
downloadThings()
} else {
Completable.complete()
}.andThen(getCachedThings())
}
我缺乏对RxJava的理解,所以我不能很好地解释它,但是看起来情况是在流“外部”。
是否有更正确的方法来执行此操作?或者我的操作方式还可以吗?
谢谢。
答案 0 :(得分:3)
Completable.create(...)
可以在这里使用,因此您可以将数据加载逻辑封装在流中。
fun getThings(): Flowable<List<Task>> {
Completable.create {
if (condition) { downloadThings() }
it.onComplete()
}.andThen(getCachedThings())
}
那是关于重构而没有逻辑损坏。否则,分析Maybe
是否符合您的逻辑就很有意义。