2017-07-01 69 views
0

我在學習RxJava /安卓(我目前它改造爲網絡電話相結合),現在我有一個問題的過程中說,我有6個不同的觀測,像這樣: Observable<Client> clients = apiInterface.getClients() Observable<Orders> orders = apiInterface.getOrders(); Observable<Products> products = apiInterface.getProducts();RxJava/RxAndroid +改造,使6級不同的可觀察到的呼叫asyncronous

等 apiInterface作爲改造的客戶端,並getClients等作爲來電

現在,我該怎麼辦,這些6個不同的電話asyncronous,當所有6完成 - >做點什麼(比如dimiss進度條)? 當每個通話結束時,我會得到數據返回通話並通過greenDAO插入。設法鏈他們syncronously到現在爲止,但我需要他們在並行任務(如6個AsyncTasks + countDownLatch實現我現在所擁有的這些調用)

+0

不是機器人,但也許[這將有助於(https://stackoverflow.com/questions/39214073/rxjava-instead-of-asynctask/39215031#39215031) –

回答

2

您應該使用壓縮運營商一樣,被解僱:

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 
        } 

       }) 
} 

郵編操作:http://reactivex.io/documentation/operators/zip.html

+0

非常感謝,我會盡力,明天和標記答案是正確的,如果我有一些成功 – Alex

+1

謝謝,它的工作原理,操作應該是一個新的觀察員,對於那些誰可以讀這篇文章,不知道它應該是什麼,FUNC3實際上是對RxAndroid功能3(或4,5等)順便說一句, – Alex