顺序RxJava网络调用

时间:2018-06-12 06:48:45

标签: android retrofit2 rx-java2 rx-android

我想为每个仓库的提交做一次github repos列表的两次调用,并希望将它们保存在一起。

在第二次调用中,我需要父pojo的实例,所以我可以添加子响应。

即保存:Gitrepo

Gitrepo{
var name:String,
var commit:Commit //<-this is fetched in second call
}

当前代码:

                        networkModule.getRepos()
                        .flatMap { itemList ->
                            Observable.fromIterable(itemList)
                        }
                        .concatMapEager { item -> networkModule.getCommits(item.name!!)
                                .onErrorResumeNext(Observable.empty()) }
                        .subscribe(
                                {
                                //problem is here I get only Commit pojo, 
                                //and have no access to Gitrepo, I'd like to do: 

                                //gitrepo.commit = it 
                                //db.save(gitrepo)
                                },
                                {
                                    utilModule.logI("error response" + it.message)
                                }
                        )

1 个答案:

答案 0 :(得分:1)

我认为GitRepo是一个类

试试这个:

networkModule.getRepos()
.flatMap { itemList -> 
     networkModule.getCommits(itemList.name!!).map{
         item -> GitRepo(
     name = itemList.name,
     commit = item
           ).onErrorResumeNext(Observable.empty())
    }
}
.subscribe(
    {
        /*do what you want*/
    },
    {
        utilModule.logI("error response" + it.message)
    }
 )