简体   繁体   English

RxJava:合并不同线程上的可观察对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM