【问题标题】:Combine two subject only when one changes and get latest from other仅当一个主题发生变化并从另一个主题中获取最新信息时才合并两个主题
【发布时间】:2017-11-19 12:28:54
【问题描述】:

我坚持让以下示例按预期工作,我尝试使用 zipcombineLatest 并如下所示 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

【问题讨论】:

    标签: rx-java rx-java2 reactivex rx-kotlin rx-kotlin2


    【解决方案1】:

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

    @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-12-13
      • 2020-05-09
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多