使用改造和 RxJava (Android) 合并来自多个 API 调用的数据
Combine data from multiple API calls using retrofit and RxJava (Android)
我想做的是通过几个不同的 URL 访问数据,合并这些数据,然后在我的应用程序中使用它。我可以轻松获取所需的所有数据,但我无法弄清楚如何将数据合并到一个列表中并知道何时完成所有 API 调用(所有数据在列表中)。
这是我进行 API 调用的循环:
for(String diningCourt: diningCourts){
menuApi.getMenu(diningCourt, date)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseData -> {
//I want to add responseData to a list with
//the results from the rest of the calls
});
}
收集数据的正确方法是什么?我试过使用静态 class 变量来存储结果,但我最终只得到来自 API 调用之一的数据。任何建议将不胜感激。
我们用"combineLatest"见http://reactivex.io/documentation/operators/combinelatest.html
使用此运算符,两个调用都会执行,并且当两个调用都完成时,您会得到一个结果。
Observable.combineLatest(observable1, observable2, (result1, result2) -> { //use both results })
我想做的是通过几个不同的 URL 访问数据,合并这些数据,然后在我的应用程序中使用它。我可以轻松获取所需的所有数据,但我无法弄清楚如何将数据合并到一个列表中并知道何时完成所有 API 调用(所有数据在列表中)。
这是我进行 API 调用的循环:
for(String diningCourt: diningCourts){
menuApi.getMenu(diningCourt, date)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseData -> {
//I want to add responseData to a list with
//the results from the rest of the calls
});
}
收集数据的正确方法是什么?我试过使用静态 class 变量来存储结果,但我最终只得到来自 API 调用之一的数据。任何建议将不胜感激。
我们用"combineLatest"见http://reactivex.io/documentation/operators/combinelatest.html 使用此运算符,两个调用都会执行,并且当两个调用都完成时,您会得到一个结果。
Observable.combineLatest(observable1, observable2, (result1, result2) -> { //use both results })