делает ли обратная эмиссия плоской карты деформацией вокруг мунада, если она уже наблюдалась - PullRequest
0 голосов
/ 09 июля 2019

в приведенном ниже коде WikiApiServiceInitializer возвращает Observable, интерфейс wikiService содержит несколько методов, каждый из которых возвращает Observable, как показано ниже. вопрос в коде

WikiApiServiceInitializer
?.flatMap { wikiService -> wikiService.hitCountCheck("query", "json","search", srsearch) }

я должен использовать flatMap или карту?

WikiApiService

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>

Observable<ResponseObjectModelForContinueContinue.Continue>

//why do we need a companion object
companion object {
    fun create(): Observable<WikiApiService>? {
        return Single.just(
            Retrofit.Builder()
                .addCallAdapterFactory(
                    RxJava2CallAdapterFactory.create()
                )
                .addConverterFactory(
                    GsonConverterFactory.create()
                )
                .baseUrl("https://en.wikipedia.org/w/")
                .build()
        )
            .map { r -> r.create(WikiApiService::class.java) }
            .toMaybe()
            .toObservable()
    }
}
}

код

private fun beginSearch(srsearch : String) {
    WikiApiServiceInitializer
        ?.flatMap { wikiService -> wikiService.hitCountCheck("query", "json","search", srsearch) }
        ?.subscribeOn(Schedulers.io())
        ?.observeOn(AndroidSchedulers.mainThread())
        ?.subscribe(
            {result ->
                Log.i(LOG_TAG, "result.query.searchinfo.totalhits: " + result.query.searchinfo.totalhits)
                mTextViewResult.text = result.query.searchinfo.totalhits.toString()
            },
            {error -> Log.e(LOG_TAG, "error.message: " + error.message)}
        )
}
...