我需要结合两个可观察量, A & B ,使用以下规则:
Maybe<A>
Maybe.empty()
。我尝试过使用combineLatest
,但如果 A 尚未发布,那么该功能无效。还尝试使用mergeWith
并执行flatMap { if(it-was-**B**-who-emitted) Maybe.empty() else Maybe.just(emitted-item) }
,但我无法将ObservableSource
转换为Maybe
是否可以在RxJava 2中创建这样的observable?
答案 0 :(得分:2)
我认为不能简单地使用默认的RxJava运算符来完成,但作为一种解决方法,您可以使用 A 发出“空元素”,并在开头使用您的值。然后,使用combineLatest
,您可以检查发出的元素是否为“空元素”,如果是,则将其转换为Maybe.empty()
,如此(使用Observable<String>
示例):
Observable.combineLatest(
a.startWith("EMPTY"),
b,
BiFunction<String, String, String> { a1, b1 -> a1 })
.firstElement()
.flatMap{ if (it == "EMPTY") Maybe.empty() else Maybe.just(it) }