RXJava, как асинхронно выполнить два наблюдаемых объекта, запустить функцию после завершения обоих и получить разницу во времени между обоими потоками?

Я ищу элегантный способ запуска двух наблюдаемых одновременно, дождаться завершения обоих (они оба получают данные из Интернета) и только после того, как оба выполнят функцию.

Мне также нужно получить разницу во времени между двумя потоками? Есть ли элегантный способ сделать это в RXJava, специально для Android. Или мне нужно будет установить глобальную переменную таймера в методах oncomplete обоих наблюдаемых и сравнивать их только после?

Я думаю, что нужно объединить наблюдаемые объекты в один, но тогда я не уверен, как получить разницу во времени?


person MrRed    schedule 05.03.2017    source источник


Ответы (1)


Вы можете заархивировать последовательность с метками времени из двух источников:

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(...);
person akarnokd    schedule 05.03.2017