Как связать оператора на плоской карте - PullRequest
0 голосов
/ 10 июля 2019

в приведенном ниже коде, в объекте-компаньоне, метод 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

            }
    }
}

1 Ответ

0 голосов
/ 11 июля 2019

Вы пытались использовать 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

            }
    }
}
...