1

我坚持让以下示例按预期工作,我尝试使用zipand combineLatest,如下所示,withLatestFrom但是它们都没有给出预期的输出。

@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)
}

我想要打印以下内容:

2 - 1

2 - 2

333 - 444

4

1 回答 1

0

经过一些更多的实验,我找到了解决方案:

@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)
}
于 2017-11-19T12:42:14.347 回答