RXJava,如何异步执行两个可观察对象,运行 一个函数,一旦两者都完成,并获得两个线程之间的时间差?

RXJava, How to execute two observeables asynchronously, run a function once both have completed, and get the time difference between both threads?

我正在寻找一种优雅的方式来同时 运行 两个可观察对象,等待它们都完成(它们都从网络上获取数据)并且只有在它们都完成后才执行一个功能。

我还需要获取两个线程之间的时间差?在 RXJava 中有没有一种优雅的方法来做到这一点,特别是 android。或者我是否必须在两个可观察对象的 oncomplete 方法中设置一个全局计时器变量,然后才比较它们?

我的想法是将observables合并为一个,但我不确定如何获得时差?

您可以压缩两个来源的时间戳序列:

Observable<A> sourceA = ...
Observable<B> sourceB = ...

Observable.zip(sourceA.timestamp(), sourceB.timestamp(), (a, b) -> {
     long timediff = a.time() - b.time();
     A itemA = a.value();
     B itemB = b.value();
     return itemA + ", " + itemB;
})
.subscribe(...);