【问题标题】:How to chain operator on flatmap如何在平面地图上链接运算符
【发布时间】:2019-07-11 20:25:15
【问题描述】:

在下面的代码中,在伴生对象中,create 方法应该返回 Single。如代码所示,我使用的最后一个运算符是 flatmap() 将改造对象转换为 Maybe.just 以确保它不为空。 但是,当我使用这个运算符时

                 .flatMap {retrofit->Maybe.just(retrofit)}

我无法链接任何其他运算符来将返回值从上述平面图转换为 Single。请让我知道为什么我不能在上述代码上链接任何其他运算符,也 请找到下面发布的代码

代码

interface WikiApiService {
@GET("api.php")
fun hitCountCheck(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForQuery.ResultOfQuery>

@GET("api.php")
fun hitContinue2(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForContinueSrOffset.ResultOfContinueSrOffset>

@GET("api.php")
fun hitContinue3(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForContinueContinue.Continue>

//why do we need a companion object
companion object {
    fun create(): Single<WikiApiService>? {
        return Single.just(
            Retrofit.Builder()
                .addCallAdapterFactory(
                    RxJava2CallAdapterFactory.create()
                )
                .addConverterFactory(
                    GsonConverterFactory.create()
                )
                .baseUrl("https://en.wikipedia.org/w/")
                .build())
            //workin.flatMap { Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
            .flatMap {retrofit->Maybe.just(retrofit)}
            .//cant chain any further operators

            }
    }
}

【问题讨论】:

    标签: android kotlin observable rx-java2


    【解决方案1】:

    您是否尝试过改用flatMapMaybe()

        companion object {
        fun create(): Single<WikiApiService>? {
            return Single.just(
                Retrofit.Builder()
                    .addCallAdapterFactory(
                        RxJava2CallAdapterFactory.create()
                    )
                    .addConverterFactory(
                        GsonConverterFactory.create()
                    )
                    .baseUrl("https://en.wikipedia.org/w/")
                    .build())
                //workin.flatMap {  Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
                .flatMapMaybe {retrofit->Maybe.just(retrofit)}
                .//cant chain any further operators
    
                }
        }
    }
    

    ?或将Maybe 转换为Single,具体取决于您希望链接的内容:

        companion object {
        fun create(): Single<WikiApiService>? {
            return Single.just(
                Retrofit.Builder()
                    .addCallAdapterFactory(
                        RxJava2CallAdapterFactory.create()
                    )
                    .addConverterFactory(
                        GsonConverterFactory.create()
                    )
                    .baseUrl("https://en.wikipedia.org/w/")
                    .build())
                //workin.flatMap {  Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
                .flatMap {retrofit->Maybe.just(retrofit).toSingle() }
                .//cant chain any further operators
    
                }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2020-11-03
      • 2017-03-01
      • 2023-03-14
      • 2016-08-04
      • 2021-08-16
      相关资源
      最近更新 更多