在 onNext 之前对 observable 中的每个项目执行非转换操作

Perform non-transformative action on each item in observable before onNext

我已经附加了一个可以从多个 viewModel 调用的函数,我试图在将这个 observable 返回到 viewModel 之前将每个 "restaurant" 存储到中央函数中的数据库。

我是 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() 中提取 "Restaurants" 列表时保存所有值。
  2. 在每个单独的 viewModel 的 onNext() 中调用 ADBConnection.storeRestaurant(餐厅)。

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

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

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

有关 doOnNext 的更多详细信息,请参阅