0

我附加了一个可以从多个视图模型调用的函数,我试图在将这个可观察对象返回给视图模型之前将每个“餐厅”存储到数据库中的中央函数中。

我是 rxandroid 的新手,我想知道是否有办法在 subscribe() 中的最终 onNext() 之前对每个项目执行非转换和非消耗操作。

(类似于下面的 doOnEach() ):

fun getData() : CompositeDisposable {
        return apiProvider!!.loadRestaurants()
            .flatMap { response : RestaurantOuterResponse? -> Observable.fromArray(
                response!!.restaurants
            )}
            .doOnEach() { restaurant : Restaurant ->
                ADBConnection.storeRestaurant(restaurant)
            }
    }

到目前为止,我发现的两个解决方案是:

  1. 当在 flatMap() 中提取“Restaurants”列表时,RestaurantOuterResponse 中有一个函数来保存所有值。
  2. 在每个单独的 viewModel 中调用 onNext() 中的 ADBConnection.storeRestaurant(restaurant)。

这些都不是很好的解决方案,我建议的方向正确吗?或者,还有更好的方法?

4

1 回答 1

0

你想要doOnNext。(你和“”很亲近doOnEach

doOnNext用于流中的副作用并且不消耗该项目。

有关. _ _doOnNext

于 2019-08-01T07:39:28.963 回答