我在RxJava中有一个函数,该函数尝试根据条件查找事物,如果成功,它会转换并以Observable
的形式返回。我想返回Observable.empty()
,因为它找不到任何内容,因此没有第一个。
我对此不太确定,但是我认为,如果过滤器过滤掉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>
,当Observable.empty()
过滤掉所有内容时,我不知道如何将其转换为filter(condition)
({{1} }对于每个condition
都为false
答案 0 :(得分:2)
您可以如下所示添加switchIfEmpty(),
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})