ReactiveX - от одного<T> до одного<R>
Я пытаюсь сделать пример проекта с подходом чистой архитектуры, и у меня есть некоторые трудности для преобразования одного в другой.
У меня есть сервис по модернизации (сингл):
@GET("nearbysearch/json") fun getNearbyPlaces(@Query("type") type: String, @Query("location") location: String, @Query("radius") radius: Int): Single<GooglePlacesNearbySearchResult>
И я использую это в моей реализации репозитория:
override fun getNearbyPlaces(type: String, location: String, radius: Int): Single<List<Place>> {
return googlePlacesApi.getNearbyPlaces(type, location, radius)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.doOnSuccess { googlePlacesNearbySearchResult -> nearbyPlaceListResultMapper.transform(googlePlacesNearbySearchResult) }
}
В этом сингле я хочу превратить свой Single<GooglePlacesNearbyResultSearch>
к Single<List<Place>>
и я хочу сделать это с моим картографом NearbyPlaceListResultMapper
Проблема в том, что мне не удается Single<List<Place>>
в конце. Я могу преобразовать его в Observable или Completable, но не в Single.
Может ли кто-нибудь помочь мне сделать это более чистым способом?
Спасибо
1 ответ
Если предположить, nearbyPlaceListResultMapper.transform
возвращает тип List<Place>>
Вы можете использовать map
операция.
fun getNearbyPlaces(type: String, location: String, radius: Int): Single<List<Place>> {
return googlePlacesApi.getNearbyPlaces(type, location, radius)
.subscribeOn(Schedulers.io())
.map { nearbyPlaceListResultMapper.transform(it) }
.observeOn(Schedulers.computation())
}