subscribing to an observable in the chain and setting the observer to the observable
1 2 | kotlin 1.2.60 rxJava 2 |
我在下面有以下代码片段。我想知道使用链接到平面图末尾的订阅并打印结果或创建观察者并订阅 Observable 有什么区别。
出于某种原因,我希望得到相同的结果。但是当我在 onNext 中打印出结果时,它会显示完整的发射项目。
但是,对于链接订阅,它显示了我的期望。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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) } |
输出如下:
来自链式订阅:
1 2 3 4 5 6 7 8 9 10 11 | 521934 2342 FOXTROT 21962 12112 78886 TANGO 283242 4542 WHISKEY 2348562 |
从 onNext:
1 2 3 | 521934/2342/FOXTROT 21962/12112/78886/TANGO 283242/4542/WHISKEY/2348562 |
source2 是一个不可变的集合。你正在观察它两次。您应该在一个新变量中捕获平面图的结果,然后观察它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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) } |