如果满足某个条件,我正在尝试切换到另一个可观察对象。在这里,如果列表为空,我需要使用另一个可观察量:
Observable<List<Something>> obs = service.getObservable();
obs.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.ifTheListIsEmpty(()-> newObservable) // I need something like this
.subscribe(subscriber)
我在这个扩展中阅读了switchCase
,但我不知道如何使用它......
使用 flatMap:
.flatMap(list ->
list.isEmpty()
? otherObservable
: Observable.just(list))
尽管@Tassos Bassoukos有一个有效的答案,但另一种方法是:
obs.flatMapIterable(l -> l)
.switchIfEmpty(otherObservable)
根据您的需要,您可以考虑发出多个Something
的Observable<Something>
。它允许您使用 Observable.from(list)
创建obs
.你甚至不再需要flatMapIterable
了!
它还使使用其他运算符(如map
)变得更加容易,因为您不必再对整个列表进行操作。