Android api一个接一个地调用第一个api响应的基础
我的情况如下。Android api一个接一个地调用第一个api响应的基础,android,kotlin,rx-java2,Android,Kotlin,Rx Java2,我的情况如下。 我必须调用一个api,它将为我提供餐厅ID列表 调用每家餐厅的Api并逐个获取信息 请帮助我使用RXJava解决方案,或者如果您有很好的解决方案,请告诉我 调用API以获取可观察的 创建可观察对象列表以获取以下信息: val restaurantsObservables:列表 =ids.map{getRestaurantById(it)} Observable.concat(Observable.from(restaurantsObservables)).toList() 可观
val restaurantsObservables:列表
=ids.map{getRestaurantById(it)}
Observable.concat(Observable.from(restaurantsObservables)).toList()
可观察。从(restaurantsObservables)
-它将源序列转换为可观察序列,并从序列中发射每个项目
Observable.concat(…)
-它将发出按顺序执行的请求
.toList()
部分将在一个可观察的中收集所有响应
这是
您只需要调用餐厅的api并将响应平面映射。假设你有这个班
data class Restaurant(val id)
例如,如果api返回一个单个,那么您可以轻松地将其平面映射:
getListOfRestaurants()
.flatMapObservable { Observable.fromIterable(it) }
.flatMap { getRestaurantDetails(it.id) }
.toList()
执行fromIterable
有助于一次发射每个餐厅,然后使用flatMap
您可以轻松获得详细信息
toList()
是可选的,只有当你想把餐馆的详细信息作为一个列表时才可以使用。对于getRestaurantDetails(it.id),我只使用了Single,但它会给我带来问题类型不匹配,当我把它设置为getRestaurantDetails(it.id)。toObservable()时,它工作正常,但我可以一次性处理它,我不确定我是否理解。是否使用flatMapObservable
?我明白了,getRestaurantDetails()
的返回是一个单一的?在这种情况下,Tooberable()
是一个很好的解决方案,但我不明白你是如何得到一次性的而不是可观察的
getListOfRestaurants()
.flatMapObservable { Observable.fromIterable(it) }
.flatMap { getRestaurantDetails(it.id) }
.toList()