【问题标题】:subscribing to an observable in the chain and setting the observer to the observable订阅链中的可观察对象并将观察者设置为可观察对象
【发布时间】:2018-08-30 23:34:21
【问题描述】:
kotlin 1.2.60
rxJava 2

我在下面有以下代码sn-p。我想知道使用链接到平面图末尾的订阅并打印结果或创建观察者并订阅 Observable 有什么区别。

出于某种原因,我希望得到相同的结果。但是当我在 onNext 中打印出结果时,它会显示完整的发射项目。

但是,对于链接订阅,它显示了我的期望。

fun main(args: Array<String>) {
    val source2 = Observable.just("521934/2342/FOXTROT", "21962/12112/78886/TANGO", "283242/4542/WHISKEY/2348562")

    source2.flatMap {
        Observable.fromArray(*it.split("/").toTypedArray())
    }
    .subscribe { println(it) }

    val observer = object : Observer<String> {
        override fun onComplete() {
        }

        override fun onSubscribe(d: Disposable) {
        }

        override fun onNext(t: String) {
            println(t)
        }

        override fun onError(e: Throwable) {
        }
    }

    source2.subscribe(observer)
}

输出如下: 来自链式订阅:

521934
2342
FOXTROT
21962
12112
78886
TANGO
283242
4542
WHISKEY
2348562

从 onNext:

521934/2342/FOXTROT
21962/12112/78886/TANGO
283242/4542/WHISKEY/2348562

【问题讨论】:

    标签: kotlin rx-java2


    【解决方案1】:

    source2 是一个不可变的集合。你正在观察它两次。您应该在一个新变量中捕获平面图的结果,然后观察它。

    fun main(args: Array<String>) {
        val source2 = Observable.just("521934/2342/FOXTROT", "21962/12112/78886/TANGO", "283242/4542/WHISKEY/2348562")
    
        val source3 = source2.flatMap {
            Observable.fromArray(*it.split("/").toTypedArray())
        }
        source3.subscribe { println(it) }
    
        val observer = object : Observer<String> {
            override fun onComplete() {
            }
    
            override fun onSubscribe(d: Disposable) {
            }
    
            override fun onNext(t: String) {
                println(t)
            }
    
            override fun onError(e: Throwable) {
            }
        }
    
        source3.subscribe(observer)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多