我附加了一个可以从多个视图模型调用的函数,我试图在将这个可观察对象返回给视图模型之前将每个“餐厅”存储到数据库中的中央函数中。
我是 rxandroid 的新手,我想知道是否有办法在 subscribe() 中的最终 onNext() 之前对每个项目执行非转换和非消耗操作。
(类似于下面的 doOnEach() ):
fun getData() : CompositeDisposable {
return apiProvider!!.loadRestaurants()
.flatMap { response : RestaurantOuterResponse? -> Observable.fromArray(
response!!.restaurants
)}
.doOnEach() { restaurant : Restaurant ->
ADBConnection.storeRestaurant(restaurant)
}
}
到目前为止,我发现的两个解决方案是:
- 当在 flatMap() 中提取“Restaurants”列表时,RestaurantOuterResponse 中有一个函数来保存所有值。
- 在每个单独的 viewModel 中调用 onNext() 中的 ADBConnection.storeRestaurant(restaurant)。
这些都不是很好的解决方案,我建议的方向正确吗?或者,还有更好的方法?