从Observable(RxJava,Reform)中获取对象值



我正在尝试使用Rxjava进行Api调用并进行改装。我必须在一个循环中进行多个api调用。我很难在我的订阅者中获得价值。

@GET("pokemon" + "/{id}")
fun getPokemonData(@Path("id") id: Int):
Observable<Pokemon>

我希望在我的订阅服务器中得到一个口袋妖怪对象,但我得到了一个Observable。如何将其转换为口袋妖怪对象?

Observable.fromIterable(list)
.flatMap { it ->
Observable
.just(it.url)
.map { PokeApi.retrofitService.getPokemonData(getPokemonIdFromUrl(it))
}
}
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
//onNext --I'm expecting to get a Pokemon Object here, instead I get a Observable<Pokemon>
}, {//onError} , {// do something when all api calls are done?})

我的目标是在";列表";并得到";被通知";当所有api调用完成时。这是解决这个问题的正确方法吗?

问题就在这里:

Observable
.just(it.url)
.map { PokeApi.retrofitService.getPokemonData(getPokemonIdFromUrl(it)) }

使用map时,它会映射到getPokemonData的返回对象。你可能想flatMap它:

Observable
.just(it.url)
.flatMap { PokeApi.retrofitService.getPokemonData(getPokemonIdFromUrl(it)) }

它不仅映射了结果,而且也使其变平,这样你就不会得到可观察的结果,而是可观察的的结果。

相关内容

  • 没有找到相关文章

最新更新