在onNext之前对可观察到的每个项目执行非变换操作

时间:2019-07-30 21:06:01

标签: android kotlin rx-java rx-java2 rx-kotlin2

我已经附加了一个可以从多个viewModels调用的函数,我正在尝试将每个“餐厅”存储到中央函数中的DB,然后再将此可观察值返回给viewModel。

我是rxandroid的新手,我想知道是否有一种方法可以对subscribe()中的最终onNext()之前的每个项目执行非转换且非消耗性的操作。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您想要doOnNext。 (您与“ doOnEach”非常接近)

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

有关doOnNext的更多详细信息,请参见this question