2017-03-05 2 views
0

Je suis à la recherche d'une manière élégante d'exécuter deux observables en même temps, attendez que les deux finissent (ils récupèrent tous les deux des données du web) et seulement une fois que les deux ont accompli une fonction.RXJava, Comment exécuter deux observables de manière asynchrone, exécuter une fonction une fois que les deux sont terminés, et obtenir le décalage horaire entre les deux threads?

J'ai également besoin d'une différence de temps entre les deux threads? Existe-t-il une manière élégante de faire ceci dans RXJava, spécifiquement pour androïde. Ou devrais-je définir une variable de temporisateur globale dans les méthodes incomplètes des deux observables et ne les comparer qu'après?

Ma pensée est de fusionner les observables en un, mais alors je ne sais pas comment obtenir le décalage horaire?

Répondre

1

Vous pouvez zip la séquence horodatée des deux sources:

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(...);