如何根据条件以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的了解不足,所以我无法很好地解释它,但是看起来情况似乎在流的“外部”。
有没有更正确的方法可以做到这一点,或者我的工作方式还可以吗?
谢谢。
最佳答案
此处可以使用Completable.create(...)
,因此您可以将数据加载逻辑封装在流中。
fun getThings(): Flowable<List<Task>> {
Completable.create {
if (condition) { downloadThings() }
it.onComplete()
}.andThen(getCachedThings())
}
那就是关于重构而没有逻辑损坏的情况。否则,分析
Maybe
是否符合您的逻辑相当重要。