RxJava Zip не работает должным образом

Я пытаюсь реализовать эту сложную структуру API. Структура API

Поэтому я попытался реализовать это с помощью RxJava2 zip для параллельных запросов.

  private fun getDetails(marketDataQuotes: MarketDataQuotes, instrumentById: InstrumentById, subscribe: Subscribe): Observable<DetailsWatchListModel> {
    return Observable.zip(
            getMarketDataQutoes(marketDataQuotes),
            getInstrumentById(instrumentById),
            getSubscribeInstrument(subscribe),
            Function3<MarketDataQuotesResponse, List<InstrumentByIdResponse>, SubscribeResult,DetailsWatchListModel>
            { marketData, instrumentList, subscribeInstrument ->
                detailWatchList(marketData, instrumentList, subscribeInstrument)
            })

}

но столкнулся с этой проблемой Ошибка

private fun getSubscribeInstrument(subscribe: Subscribe): LiveData<SubscribeResult> {
    val mutableLiveData = MutableLiveData<SubscribeResult>()
    remoteServices.requestSubscribe(subscribe)
            .subscribeOn(Schedulers.io())
            //  .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(object : ErrorCallBack<BaseResponse<SubscribeResult>>() {
                override fun onSuccess(t: BaseResponse<SubscribeResult>) {
                    L.d("Success of Market data Quotes")
                    // mutableLiveData.value = transform(t)
                }

            })
    return mutableLiveData
}

И другие вызовы API подобны этому с единственной обработкой ошибок и базовой структурой ответа.

И обслуживание нравится

@Headers("Content-Type: application/json")
@POST("instruments/subscription")
fun requestSubscribe(@Body subscribe: Subscribe): Observable<BaseResponse<SubscribeResult>>

Используя Kotlin v1.2.21, retofit 2.3.0, RxJava2 2.1.5 Пожалуйста, дайте мне знать, что я делаю неправильно. Tanx заранее


person Rupesh    schedule 20.02.2018    source источник
comment
Я не программист на Kotlin, но попробуйте object : Function3 (и т. д.) с zip.   -  person akarnokd    schedule 20.02.2018
comment
Можете ли вы предоставить мне пример кода. я тоже пробую, но все еще сталкиваюсь с проблемой   -  person Rupesh    schedule 20.02.2018


Ответы (1)


LiveData нельзя заархивировать с помощью RxJava.

Вам необходимо использовать этот API: https://developer.android.com/reference/android/arch/lifecycle/LiveDataReactiveStreams.html

Поэтому конвертируйте ваши LiveData в RxJava, а затем заархивируйте их.

person Appyx    schedule 22.02.2018