在 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)
}
}
到目前为止我找到的两个解决方案是:
- 在 RestaurantOuterResponse 中有一个函数,用于在 flatMap() 中提取 "Restaurants" 列表时保存所有值。
- 在每个单独的 viewModel 的 onNext() 中调用 ADBConnection.storeRestaurant(餐厅)。
None 这些都是很好的解决方案,我建议的方向是否正确?或者有更好的方法吗?
你想要doOnNext
。 (您与“doOnEach
”非常接近)
doOnNext
用于流中的副作用,不消耗该项目。
有关 doOnNext
的更多详细信息,请参阅 。
我已经附加了一个可以从多个 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)
}
}
到目前为止我找到的两个解决方案是:
- 在 RestaurantOuterResponse 中有一个函数,用于在 flatMap() 中提取 "Restaurants" 列表时保存所有值。
- 在每个单独的 viewModel 的 onNext() 中调用 ADBConnection.storeRestaurant(餐厅)。
None 这些都是很好的解决方案,我建议的方向是否正确?或者有更好的方法吗?
你想要doOnNext
。 (您与“doOnEach
”非常接近)
doOnNext
用于流中的副作用,不消耗该项目。
有关 doOnNext
的更多详细信息,请参阅