RxJava2:首先替代rx.Observable方法(谓词)

我想使用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只发出非空的第一个项,但这当然会失败,因为io.reactivex.Observable没有方法(Func1)谓词)像rx.Observable.

如果我在RxJava2中有任何选项,或者更好地坚持使用RxJava1,我有什么选择?

解决方法:

考虑使用Maybe而不是Obulable of nullable类型(它不适用于RxJava2).然后使用Maybe.concat仅将发出的项目作为Flowable.只需获取第一个元素,首先返回Single(您必须指定一个默认项)或firstElement返回Maybe:

Maybe.concat(source1, source2, source3, source4)
    .firstElement()
上一篇:android – Kotlin:如何检查带有lateinit属性的变量是否已初始化


下一篇:android – Rx Kotlin:map函数无法推断返回类型