rx-java - 如果 observable.filter().first() 什么都不返回,如何返回 Observable.empty()?

标签 rx-java rx-java2 reactivex

我在 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/

相关文章:

java - .zip 方法中的 Observable 数量是否有限制?

java - 将标准 Android 代码重构为 Reactive 代码

java - RxJava - Just vs From

android - 如何检查表达式的结果是否用于自定义 Android lint 规则

rxjs - 如何知道 switchMap 是否取消订阅内部 Observable?

caching - 在 Angular2 中使用 RxJs 5 为 REST 客户端提供基于时间的缓存

android - 为什么带有 toList() 的 debounce() 在 RxAndroid 中不起作用?

android - 使用 RxJava 的存储库网络感知

java - 用于组合映射的 RxJava 组合器?

spring-webflux - 阻塞 http 调用期间的响应式(Reactive)编程基础