下面是我的代码,我想在循环中运行一个suspend函数。
它工作正常,但是postValue并不是每次调用观察器时都更新值,只更新一次。下面是我的代码。
jobSearch = viewModelScope.launch(exceptionHandler) {
for (category in (searchCategories.value?.data ?: emptyList())) {
searchResponse.postValue(Resource.loading(null))
val response =
searchResultSource.getSearchResultFromRepo(
category?.id,
searchTerm,
1,
Constants.PAGE_SIZE_SEARCH
)
response?.let {
searchResponse.postValue(Resource.sucess(response))
} ?: run {
searchResponse.postValue(Resource.error("Something Went Wrong"))
}
}
}
1条答案
按热度按时间mspsb9vt1#
postValue
方法将新值加入Main Thread
中。如果在主线程将该值传递给观察器之前调用此方法,它将用新值替换旧值。因此,观察器总是读取最后发出的值。您需要用以下代码替换searchResponse.postValue
调用,以将所有发出的值传递给观察器: