RxJava Combine最新调试

时间:2018-10-25 09:06:22

标签: java kotlin rx-java combinelatest

我正在使用RxJava CombineLatest运算符。

根据文档,在订阅时,只有在两个可观察对象都发出值之后才发生第一个合并发出事件,从这一点出发,它将在每个可观察对象的每次发出时发出。

我如何确定已发生第一个可观察到的发射事件,现在它正在等待第二个事件。

1 个答案:

答案 0 :(得分:2)

您可以将doOnEach用于ObservablesFlowables,也可以将doOnEvent用于SinglesCompletablesMaybes。这些操作的作用是,每当从源中发出一个项目时,就在将信号传递到下游之前执行一些代码。将调试/记录代码“注入”到RX流中非常有用。

请参阅:https://proandroiddev.com/briefly-about-rxjava-logging-20308b013e6d

编辑:

val a = BehaviorSubject.create<Int>().apply {
    onNext(1)
}.doOnEach { EventReporter.d(TAG, it.value?.toString() ?: "") }

val b = BehaviorSubject.create<Int>().apply {
    onNext(2)
}.doOnEach { EventReporter.d(TAG, it.value?.toString() ?: "") }

Observable.combineLatest(listOf(a, b), { args: Collection<Int> -> args}