в приведенном ниже коде 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)}
)
}