【问题标题】:ReactiveX - Single<T> to Single<R>ReactiveX - Single<T> 到 Single<R>
【发布时间】:2018-09-10 10:39:42
【问题描述】:

我正在寻找一个具有简洁架构方法的示例项目,但我在将单个项目转换为另一个项目时遇到了一些困难。

我有我的改装服务(单人):

@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&lt;GooglePlacesNearbyResultSearch&gt; 转换为Single&lt;List&lt;Place&gt;&gt;,并且我想用我的映射器NearbyPlaceListResultMapper 来做到这一点

问题是我最后没有成功获得Single&lt;List&lt;Place&gt;&gt;。我可以将其转换为 Observable 或 Completable 但不能转换为 Single。

谁能帮助我以更清洁的方式拥有它?

谢谢

【问题讨论】:

    标签: rx-java retrofit2 reactivex clean-architecture rx-kotlin


    【解决方案1】:

    假设nearbyPlaceListResultMapper.transform 返回类型List&lt;Place&gt;&gt;,您可以使用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())
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多