如何 return Observable.empty() 如果 observable.filter().first() return 什么都没有?
How to return Observable.empty() if observable.filter().first() returns nothing?
我在 RxJava 中有一个函数,它试图根据条件找到一个事物,如果成功,它会转换并 return 将其作为 Observable
。如果找不到任何东西,我想 return 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()
return 是一个 Maybe<Thing>
,我不知道如何在 filter(condition)
过滤掉时将其变成 Observable.empty()
一切(condition
对每个 thing
评估为假)
您可以如下所示添加 switchIfEmpty(),
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})
我在 RxJava 中有一个函数,它试图根据条件找到一个事物,如果成功,它会转换并 return 将其作为 Observable
。如果找不到任何东西,我想 return 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()
return 是一个 Maybe<Thing>
,我不知道如何在 filter(condition)
过滤掉时将其变成 Observable.empty()
一切(condition
对每个 thing
评估为假)
您可以如下所示添加 switchIfEmpty(),
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})