我正在学习RxJava / Android(我目前正在将它与Retrofit结合用于网络调用),现在我有一个问题,比如我有6个不同的Observable,像这样:
Observable<Client> clients = apiInterface.getClients()
Observable<Orders> orders = apiInterface.getOrders();
Observable<Products> products = apiInterface.getProducts();
等。 apiInterface是Retrofit客户端,getClients等是调用
现在,我如何做这6个不同的调用asyncronous,当所有6个调用完成时 - &gt;做点什么(像dimiss一个进度条)? 当每个呼叫结束时,我将获得数据返回呼叫并通过greenDAO插入。管理将它们同步链接到现在,但是我需要它们在并行任务中被解雇(比如我现在对这些调用的6个AsyncTasks + countDownLatch实现)
答案 0 :(得分:2)
您应该像这样使用zip运算符:
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
}
})
}