Rx java 仅当一个主题发生变化并从另一个主题获取最新信息时,才合并两个主题

Rx java 仅当一个主题发生变化并从另一个主题获取最新信息时,才合并两个主题,rx-java,rx-java2,reactivex,rx-kotlin,rx-kotlin2,Rx Java,Rx Java2,Reactivex,Rx Kotlin,Rx Kotlin2,我一直无法让下面的示例按预期工作,我尝试使用zip和combinelatetest,如下所示和latestfrom但是没有一个给出预期的输出 @Test fun thereCanBeOnlyOne() { val s1 = BehaviorSubject.create<Int>() val s2 = BehaviorSubject.create<Int>() s2.withLatestFrom<Int, Int, Int>(s1)

我一直无法让下面的示例按预期工作,我尝试使用
zip
combinelatetest
,如下所示
和latestfrom
但是没有一个给出预期的输出

@Test
fun thereCanBeOnlyOne() {
    val s1 = BehaviorSubject.create<Int>()
    val s2 = BehaviorSubject.create<Int>()

    s2.withLatestFrom<Int, Int, Int>(s1)
            .subscribe { (a, b) ->
                println("$a - $b")
            }

    s1.onNext(1)
    s1.onNext(2)
    s2.onNext(1)
    s2.onNext(2)
    s1.onNext(333)
    s2.onNext(444)
}
@测试
这里的乐趣只有一个人{
val s1=BehaviorSubject.create()
val s2=BehaviorSubject.create()
s2.最晚从(s1)
.订阅{(a,b)->
println(“$a-$b”)
}
s1.onNext(1)
s1.onNext(2)
s2.onNext(1)
s2.onNext(2)
s1.onNext(333)
s2.onNext(444)
}
我想要打印以下内容:

2-1

2-2

333-444


经过更多的实验,我在以下方面找到了解决方案:

@Test
fun thereCanBeOnlyOne() {
    val s1 = BehaviorSubject.create<Int>()
    val s2 = BehaviorSubject.create<Int>()

        Observables.combineLatest(s1, s2)
            .distinctUntilChanged { (_,b) -> b }
            .subscribe { (a, b) ->
                println("$a - $b")
            }

    s1.onNext(1)
    s1.onNext(2)
    s2.onNext(1)
    s2.onNext(2)
    s1.onNext(333)
    s2.onNext(444)
}
@测试
这里的乐趣只有一个人{
val s1=BehaviorSubject.create()
val s2=BehaviorSubject.create()
可观测。组合测试(s1,s2)
.distinctUntilChanged{(_,b)->b}
.订阅{(a,b)->
println(“$a-$b”)
}
s1.onNext(1)
s1.onNext(2)
s2.onNext(1)
s2.onNext(2)
s1.onNext(333)
s2.onNext(444)
}

经过更多的实验,我在以下方面找到了解决方案:

@Test
fun thereCanBeOnlyOne() {
    val s1 = BehaviorSubject.create<Int>()
    val s2 = BehaviorSubject.create<Int>()

        Observables.combineLatest(s1, s2)
            .distinctUntilChanged { (_,b) -> b }
            .subscribe { (a, b) ->
                println("$a - $b")
            }

    s1.onNext(1)
    s1.onNext(2)
    s2.onNext(1)
    s2.onNext(2)
    s1.onNext(333)
    s2.onNext(444)
}
@测试
这里的乐趣只有一个人{
val s1=BehaviorSubject.create()
val s2=BehaviorSubject.create()
可观测。组合测试(s1,s2)
.distinctUntilChanged{(_,b)->b}
.订阅{(a,b)->
println(“$a-$b”)
}
s1.onNext(1)
s1.onNext(2)
s2.onNext(1)
s2.onNext(2)
s1.onNext(333)
s2.onNext(444)
}