用Java编写时,我调用zip()方法,该方法接收一些返回Observable 的方法。

目前,我无法进入以下 map ,这可能是由于其中一种方法尚未返回值这一事实所致。 (尽管似乎所有方法都在调用。)

有没有一种方法可以调试过程并查看为什么卡住了?
谢谢。

最佳答案

假设您有:

result = Observable.zip(sourceA, sourceB, sourceC)

只需在每个来源上添加一个.doOnNext()即可记录其发出的内容(或订阅doOnNext而不是zip)。例如:
result = Observable.zip(sourceA.doOnNext(/*logging...*/),
                        sourceB.doOnNext(/*logging...*/),
                        sourceC.doOnNext(/*logging...*/))

可能发生的情况是,这些光源之一发射的频率与其他光源发射的频率不同。当您严格知道所有源以相同的速度/频率发射事件时,必须使用combineLatest。您可能想尝试使用ojit_code。两者之间的区别是:
  • zip:返回的Observable仅在源的所有第n个项均已发出时才发出第n个“组合”项。看到一个diagram
  • CombineLatest:返回的Observable每当其任何源发出一个item时,都会发出一个“combination”项目。看到一个diagram
  • 09-10 13:00
    查看更多