调试停止的RxJava zip运算符

Bic*_*ick 3 java multithreading java-7 rx-java

用Java编写我调用zip()方法接收一些返回Observable <...>的方法.

目前我无法进入下面的地图,这可能是因为其中一个方法尚未返回值.(虽然似乎所有的方法都被称为.)

有没有办法调试过程,看看它为何陷入困境?
谢谢.

And*_*ltz 5

假设你有:

result = Observable.zip(sourceA, sourceB, sourceC)
Run Code Online (Sandbox Code Playgroud)

只需.doOnNext()在每个源上添加一个来记录它们发出的内容(或者代替doOnNext订阅每个源).例如:

result = Observable.zip(sourceA.doOnNext(/*logging...*/),
                        sourceB.doOnNext(/*logging...*/),
                        sourceC.doOnNext(/*logging...*/))
Run Code Online (Sandbox Code Playgroud)

可能发生的事情是,其中一个来源的排放频率与其他来源不同.zip当您严格知道所有信号源以相同的速度/频率发出事件时,必须使用此信息.您可能想尝试使用combineLatest.两者之间的区别是:

  • zip:只有在发出所有第n个源项时,返回的Observable才会发出第n个'组合'项.看到一个.
  • combineLatest:返回的Observable在其任何源发出项目时发出"组合"项.看到一个.