[英]RxJava: merging observables on different threads
I need to merge two observables running on different threads.我需要合并在不同线程上运行的两个可观察对象。 Sample code is
示例代码是
val obs1 = Observable
.create<Int> { emitter ->
emitter.onNext(1)
emitter.onComplete()
}
.subscribeOn(Schedulers.newThread())
val obs2 = Observable.just(2)
val obs = Observable
.just(1, 2)
.flatMap {
Observable.merge(
Observable.just(it).filter { it == 1 }.flatMap { obs1 },
Observable.just(it).filter { it == 2 }.flatMap { obs2 }
)
}
.serialize()
obs.blockingSubscribe(::println)
Expecting output as 1, 2
, sometime get it 2, 1
.期望 output 为
1, 2
,有时得到它2, 1
。
It seems serialize()
doesn't help.似乎
serialize()
没有帮助。
How can I achieve right emission order - 1, 2
?如何实现正确的排放顺序 -
1, 2
?
Have found proper solution quickly:)很快找到了合适的解决方案:)
val obs = Observable
.just(1, 2)
.concatMap {
if (it == 1) obs1 else obs2
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.