我在RxJava中有一个函数,它试图根据条件找到一个Thing,如果成功,它会转换并将其返回为Observable
。如果找不到任何东西,我想返回Observable.empty()
,因此没有第一个。我不确定这一点,但我认为如果filter过滤掉Observable
中的每个元素,结果无论如何都将是Observable.empty()
(没有firstElement()
(。
void Observable<Thing> transformFirst(Observable<Thing> things,Predicate<Thing> condition){
return things
.filter(condition)
.firstElement()
.map(firstThing ->{...do sg...})
}
编辑:
我的问题是,firstElement()
返回一个Maybe<Thing>
,当filter(condition)
过滤掉所有内容时,我不知道如何将其转换为Observable.empty()
(对于每个thing
,condition
都会变为false(
您可以添加switchIfEmpty((,如下所示,
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})