Kotlin, как сделать несколько вызовов API, используя модернизацию и rxjava в последовательном порядке? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть список массивов API

    allSignsList = ArrayList()
            allSignsList.add(AllSignsList( "Overview", "overview.aspx"))
            allSignsList.add(AllSignsList( "Details", "details.aspx"))
            allSignsList.add(AllSignsList( "Description", "description.aspx"))
            allSignsList.add(AllSignsList( "profile", "profile.aspx"))

Я делаю запрос, используя цикл for в массиве allSignList, поскольку формат ответа во всех API одинаков.Но главная проблема, с которой я сталкиваюсь - это результат не в последовательном порядке.Я хочу дождаться завершения запроса, прежде чем вызывать другой API.

Я делаю сетевой вызов следующим образом:

try {
        mApiServiceNetwork.getNetworkServiceForXml(getNewXmlBaseUrl())
                .getXmlTest(path)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(object : Subscriber<RSSFeedItems>() {
                    override fun onCompleted() {
                        //Do nothing for now
                    }

                    override fun onError(e: Throwable) {
                        Log.e(TAG, "onError " + Log.getStackTraceString(e))
                        apiResult.onAPIFail()
                    }

                    override fun onNext(rssFeed: RSSFeedItems) {
                        Log.e(TAG+" Weekly", (MainActivity.weeklyCount++).toString() + " Operation performed successfully")
                        apiResult.onModel(rssFeed)

                    }
                })

    } catch (e: Exception) {
        Log.e(TAG, "Exception" + Log.getStackTraceString(e))
        apiResult.onError(e)
    }
...