2017-07-01 1 views
0

Je suis en train d'apprendre RxJava/Android (je le combine actuellement avec Retrofit pour les appels réseau), maintenant j'ai une question, disons que j'ai 6 différents observables, comme celui-ci: Observable<Client> clients = apiInterface.getClients() Observable<Orders> orders = apiInterface.getOrders(); Observable<Products> products = apiInterface.getProducts();RxJava/RxAndroid + Retrofit, rendant 6 différents appels Observable asynchrone

etc. apiInterface étant le client Retrofit et getClients etc. étant les appels

maintenant, comment dois-je faire ces 6 appels différents asyncronous, et quand tout 6 sont fait - > faire quelque chose (comme dimiss une barre de progression)? Et quand chaque appel se termine, je vais obtenir les données retournées l'appel et l'insertion via greenDAO. Réussi à la chaîne les syncronously jusqu'à présent, mais je les ai besoin d'être tiré dans des tâches parallèles (comme les 6 AsyncTasks + CountDownLatch mise en œuvre i ont en ce moment pour ces appels)

+0

Non android, mais peut-être [cela vous aidera] (https://stackoverflow.com/questions/39214073/rxjava-instead-of-asynctask/39215031#39215031) –

Répondre

2

Vous devez utiliser l'opérateur postal comme ça:

Observable<Client> clients = apiInterface.getClients() 
Observable<Orders> orders = apiInterface.getOrders(); 
Observable<Products> products = apiInterface.getProducts(); 

Observable<String> clientorders = Observable.zip(
         clients, 
         orders, 
         products, 
         new Func3<Client, Orders, Products> { 
           @Override 
           public String call(Client client, Orders orders, products products) { 


             return "progress bar dismissed" ; 
           } 
         } 
);  

clientorders.subscribe(new Action1<String>() { 

        @Override 
        public void call(String s) { 
         //action 
         //dimiss progress bar 
        } 

       }) 
} 

opérateur postal: http://reactivex.io/documentation/operators/zip.html

+0

Merci beaucoup , je vais essayer demain et marquer la réponse comme correcte si j'ai un certain succès – Alex

+1

Merci, ça marche, Action devrait être un nouvel observateur , pour ceux qui peuvent lire ceci et ne savent pas ce qu'il devrait être, et Func3 est réellement Function3 (ou 4, 5 etc.) sur RxAndroid btw, – Alex