RxJava2:替代 rx.Observable 方法 first(predicate)
RxJava2: Alternative to rx.Observable method first(predicate)
我想使用 RxJava 但找不到替代方法
public final Observable<T> first(Func1<? super T,java.lang.Boolean> predicate)
在 RxJava2 中。
我要做的是:
return io.reactivex.Observable
.concat(source1, source2, source3, source4)
.first(obj -> obj != null);
参数 source1 到 source4 是我连接的 io.reactivex.Observable
个实例,我希望生成的 Observable 只发出第一个不为 null 的项目,但这当然会失败,因为 io.reactivex.Observable
不会方法 first(Func1 predicate)
类似于 rx.Observable
。
如果我在 RxJava2 中有任何选择,还是坚持使用 RxJava1 更好?
first 已重命名为 firstElement。此外,Rx 2.0 不支持流上的空值。
考虑使用 Maybe
而不是可空类型的 Observable
(它不适用于 RxJava2)。然后使用 Maybe.concat
只获取发出的项目 Flowable
。只需获取第一个元素 first
到 return Single
(你必须指定一个默认项)或 firstElement
到 return Maybe
:
Maybe.concat(source1, source2, source3, source4)
.firstElement()
RxJava2 不允许发出其他人建议的 null 值。
但是,如果确定要返回的第一个值的谓词不是检查 null,则您可以考虑在 .first
之前使用 .filter
(需要指定一些默认值)或.firstOrError
(如果没有匹配则发出 OnError)
return io.reactivex.Observable
.concat(source1, source2, source3, source4)
.filter(obj -> obj == someAnotherObj)
.firstOrError();
我想使用 RxJava 但找不到替代方法
public final Observable<T> first(Func1<? super T,java.lang.Boolean> predicate)
在 RxJava2 中。
我要做的是:
return io.reactivex.Observable
.concat(source1, source2, source3, source4)
.first(obj -> obj != null);
参数 source1 到 source4 是我连接的 io.reactivex.Observable
个实例,我希望生成的 Observable 只发出第一个不为 null 的项目,但这当然会失败,因为 io.reactivex.Observable
不会方法 first(Func1 predicate)
类似于 rx.Observable
。
如果我在 RxJava2 中有任何选择,还是坚持使用 RxJava1 更好?
first 已重命名为 firstElement。此外,Rx 2.0 不支持流上的空值。
考虑使用 Maybe
而不是可空类型的 Observable
(它不适用于 RxJava2)。然后使用 Maybe.concat
只获取发出的项目 Flowable
。只需获取第一个元素 first
到 return Single
(你必须指定一个默认项)或 firstElement
到 return Maybe
:
Maybe.concat(source1, source2, source3, source4)
.firstElement()
RxJava2 不允许发出其他人建议的 null 值。
但是,如果确定要返回的第一个值的谓词不是检查 null,则您可以考虑在 .first
之前使用 .filter
(需要指定一些默认值)或.firstOrError
(如果没有匹配则发出 OnError)
return io.reactivex.Observable
.concat(source1, source2, source3, source4)
.filter(obj -> obj == someAnotherObj)
.firstOrError();