RxJava2 doOnNext返回比预期晚

时间:2019-03-20 18:08:23

标签: android rx-java2 android-room

所以我很确定我在这里有点茫然。

预期的行为是:

  

从API获取数据->将其保存在本地数据库中->从   本地数据库并显示

首先在我的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() } }) 中,我调用一个执行此操作的函数:

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

fetchAllCategories调用ViewModel中的一个函数,该函数调用该函数:

displayCategoryChildren()

但是函数ViewModel在onNext完成之前会触发,这会导致错误,因为应该从数据库获取应用程序的数据尚未保存在那里。

如果有任何相关意义,我也可以在{{1}}

中发布功能

0 个答案:

没有答案