RxJava2 doOnNext возвращается позже, чем предполагалось - PullRequest
0 голосов
/ 20 марта 2019

Так что я почти уверен, что я немного растерялся.

Ожидаемое поведение:

Получить данные из API -> сохранить их влокальная БД -> загрузить данные из локальной БД и отобразить их

Прежде всего в моем Fragment я вызываю функцию, которая делает это:

mLiveData = viewModel.fetchAllCategories(getString(R.string.lang_code))
mCategoryLiveData!!.observe(this, Observer<Array<Category>> { it ->
            if (it != null) {
                this@CategoryListFragment.allCategories = SparseArray(it.size)
                for (category in it) {
                        allCategories[category.id] = category
                }   

                displayedCategory = allCategories[1]
                this@CategoryListFragment.mLoadingCircle.visibility = View.GONE
                this@CategoryListFragment.displayCategoryChildren()
            }
        })

fetchAllCategories вызывает aфункция в ViewModel, которая вызывает эту функцию:

fun getAllCategoriesFromAPI(language: String): Flowable<Array<Category>> {
    return service.getAllCategories(language)
        .doOnNext {
        Log.e("Repository", "Fetched ${it.size} Categories from the API ")                
        storeCategoriesInDb(it)
    }
}

Однако функция displayCategoryChildren() срабатывает до завершения onNext, что приводит к ошибке, поскольку данные, которые приложение должно получить из БД, не сохраняются тампока.

Если это имеет какое-либо отношение, я также могу опубликовать функцию в ViewModel

...