我在 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)
过滤掉所有内容( condition
对每个 thing
评估为假)
最佳答案
你可以添加如下所示的 switchIfEmpty(),
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})
关于rx-java - 如果 observable.filter().first() 什么都不返回,如何返回 Observable.empty()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172885/