RxJava Combine最新调试

RxJava CombineLatest debugging

我正在使用 RxJava combineLatest 运算符。

根据文档,在订阅时,第一个组合发射事件将仅在两个可观察对象发射值后发生,并且从这一点开始,它将在每个可观察对象的每次发射时发射。

我如何确定第一个可观察的发射事件已经发生并且它现在正在等待第二个..

您可以对 ObservablesFlowables 使用 doOnEach,对 SinglesCompletablesMaybes 使用 doOnEvent。这些操作所做的是在将信号向下传递之前,每次从源发出一个项目时执行一些代码。这对于 "injecting" debug/logging 代码到 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}