我想执行以下操作.我有一个事务列表,我希望通过为每个事务发出2个api请求(我正在使用retrofit2)来更新,然后将结果保存到数据库中(使用观察者).经过一些搜索,我决定使用zip运算符来组合2个请求,但我遇到的问题是我无法确定整个过程何时完成更新UI.代码看起来像这样.
for (Transaction realmTransaction : allTransactions) {
Observable<Map<String, String>> obs1 = getObs1(realmTransaction);
Observable<Map<String, String>> obs2= getObs2(realmTransaction);
Observable.zip(obs1, obs2,
(map1, map2) -> {
Map<String, String> combined = new HashMap<>();
// do some processing and return a single map after
return combined;
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(realmTransaction));
}
public Observer<Map<String, String>> getObserver(Transaction t){
return new Observer<Map<String, String>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Map<String, String> stringStringMap) {
// update database
}
@Override
public void onError(Throwable e) { …Run Code Online (Sandbox Code Playgroud)