我有两个观测值,除非它没有给我我想要的(在本例中为空列表),否则我想使用第一个。如果是这样,我想切换到第二个。
fun test() {
listSource1().switchMap {
if (it.isEmpty()) listSource2() else listSource1()
}
}
fun listSource1() = Observable.just(emptyList<String>())
fun listSource2() = Observable.just(listOf("hello"))
有没有比这更好的方法了?将
listSource1
映射到listSource1
似乎很奇怪,这是正确的方法吗? 最佳答案
FlatMap首先查看该项目是否为空列表:
Observable<List<T>> source = ...
Observable<List<T>> fallbackSource = ...
source.flatMap(list -> {
if (list.isEmpty()) {
return fallbackSource;
}
return Observable.just(list);
});