如果Observable.filter().first()什么都不返回,如何返回Observable.empty()



我在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()(对于每个thingcondition都会变为false(

您可以添加switchIfEmpty((,如下所示,

return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})

最新更新