来自Observable.concat的奇怪结果(可观察,可观察)

时间:2018-02-07 18:00:20

标签: android kotlin rx-java reactive-programming rx-java2

一会儿,我读到了关于RxJava concat并决定测试我的理解。但是我遇到了一些我不太了解的行为。

问题是,当我连接两个observable时,我会得到不同的行为,具体取决于我将它们传递给Observable.concat()的顺序

val ob1 = createObservableSomehow()

val ob2 = createObservableSomehow()

Observable.concat(ob1,ob2).subscribe(::println) //only prints emissions of ob1


Observable.concat(ob2,ob1).subscribe(...) //concats all emissions correctly

请参阅附带的屏幕截图,了解如何创建两个observable。 This screenshot shows how am creating the observables

2 个答案:

答案 0 :(得分:3)

concat()将等待第一个流完成,然后它才会开始从第二个流中发出项目。

在你的情况下,你声明了,第一个观察者已经完成了它的排放,所以concat()假设还有排放,因为没有发送过终端事件。

只要在第一个流中执行it.onComplete(),您就会看到预期的输出。

答案 1 :(得分:1)

你需要在最后一个onNext()之后为第一个Observable

调用onComplete()