小编ksa*_*tis的帖子

RXJava.确定for循环内的所有obervable何时完成

我想执行以下操作.我有一个事务列表,我希望通过为每个事务发出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)

android retrofit2 rx-java2

1
推荐指数
1
解决办法
579
查看次数

标签 统计

android ×1

retrofit2 ×1

rx-java2 ×1