Rx java 如果Observable.filter().first()不返回任何内容,如何返回Observable.empty()?
我在RxJava中有一个函数,它试图根据一个条件找到一个对象,如果成功,它将转换并返回一个Rx java 如果Observable.filter().first()不返回任何内容,如何返回Observable.empty()?,rx-java,rx-java2,reactivex,Rx Java,Rx Java2,Reactivex,我在RxJava中有一个函数,它试图根据一个条件找到一个对象,如果成功,它将转换并返回一个可观察的。我想返回Observable.empty()。 我不确定这一点,但我认为如果过滤器过滤掉可观察的中的每个元素,结果将是可观察的.empty()(没有firstElement()) void Observable transformFirst(可观察事物,谓词条件){ 归还物品 .过滤器(条件) .firstElement() .map(第一件事->{…do sg…}) } 编辑: 我的问题是fi
可观察的。我想返回Observable.empty()。
我不确定这一点,但我认为如果过滤器过滤掉可观察的中的每个元素,结果将是可观察的.empty()
(没有firstElement()
)
void Observable transformFirst(可观察事物,谓词条件){
归还物品
.过滤器(条件)
.firstElement()
.map(第一件事->{…do sg…})
}
编辑:
我的问题是firstElement()
返回一个可能
,我不知道如何将其转换为可观察的.empty()
当过滤器(条件)
过滤掉所有内容时(条件
对每件事情
)可以添加switchIfEmpty(),如下所示
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})
things.filter(condition)
其中的条件总是计算为false
与Observable.empty()
有何不同?我不认为这有什么不同,我相信它会是Observable.empty()
。但是当我做事情时。filter(condition).firstElement()
它会返回一个可能
,我不知道如何将它转换成可观察的.empty()
为什么要使用firstElement()
呢?也许你应该使用。首先(condition)
然后…可观察的.empty()
是一个恒定的空源,与任意的可观察的
不同,它被过滤后没有项目。为什么不继续使用Maybe
,这表示您可能有或可能没有物品。您最多可以通过toObservable()
将其转换回可观察的Observable
。
return things
.filter(condition)
.switchIfEmpty(Observable.empty())
.firstElement()
.map(firstThing ->{...do sg...})