Последовательные сетевые вызовы RxJava

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

Во втором вызове мне нужен экземпляр родительского pojo, чтобы я мог добавить к нему ответ потомка.

т.е. сохранить: Гитрепо где

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 ответ

Решение

Я полагаю, что 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)
    }
 )
Другие вопросы по тегам