java映射请求基于一个可观察对象中的每个元素,使用改进?
我正在迁移REST
调用以使用:Observable<T>
而不是:Call<T>
。对于简单的东西,它基本上是直接的,但我有点坚持这个
我用这个链浏览了一个请求的页面:
Observable.range(1, 100)
.concatMap(pageNumber -> retrofitApi.itemsObservable(pageNumber))
.takeUntil(itemsResponse -> itemsResponse.list().isEmpty()
.reduce(items, itemsResponse -> items.addAll(itemsResponse.list())
.map(items -> new ArrayList(items))
到目前为止还不错,但是。。。让我困惑的是:如何整理后续步骤:
- 对于
items
中的每个元素,发出另一个请求:retrofitApi.itemDetails(pageNumber)
,它返回与元素相关的数据(关于分页) - 将数据添加或映射到元素
items
- 将
items
返回为:Observable<T>
元素
# 1 楼答案
我自己想出来的
flatMap()
似乎是适合这种情况的运算符下面是完整代码的外观: