Последовательные сетевые вызовы RxJava - PullRequest
0 голосов
/ 12 июня 2018

Я хочу сделать два вызова, один для списка репозиториев github, второй для коммитов на каждом репо и хочу сохранить их вместе.

Во втором вызове мне нужен экземпляр родительского 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 голосов
/ 12 июня 2018

Я полагаю, что 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)
    }
 )
...