android - 如何从 Completable 有条件地启动 RxJava 链到 Flowable?
问题描述
我将如何开始一个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
符合您的逻辑是相当重要的。
推荐阅读
- angular - 如何使用 Angular 和 RXJS 组合查询参数 observable 和 form observable
- c++ - VS2010 C++ 调试管理 (C++/CLI) DLL
- reactjs - React-native :app:transformDexArchiveWithExternalLibsDexMergerForDebug 失败
- c++ - QT GStreamer Windows 链接器问题
- android - 是否可以将持久底片作为片段?
- java - 建立 SSL 主机连接时无法使用签名证书验证 Cacerts
- angular - 使用 `ng build --prod` 编译 Angular 项目时出现错误
- ubuntu - 如何检查ubuntu服务器上是否禁用了root登录
- python - 使用 with 在烧瓶中获取闪烁的消息
- oracle - 选定数据的物化视图刷新 - Oracle