【发布时间】:2020-07-23 14:56:49
【问题描述】:
我正在尝试使用 Retrofit 2 和协程从 Api 获取数据。从我的 GetRepositoriesUseCase 我开始协程,但 'await()' 函数是一个未解决的引用。
视图模型:
fun getRepositoryList() {
getRepositoriesUseCase(textLiveData.value.toString(), viewModelScope) { result ->
result.onSuccess { repositoriesList.value = it }
result.onFailure { show(it.message.toString()) }
}
}
GetRepositoriesUseCase:
class GetRepositoriesUseCase(private val repository: ApiRepository) {
operator fun invoke(
key: String,
coroutineScope: CoroutineScope,
onResult: (Result<Collection<Repository>>) -> Unit
) {
coroutineScope.launch {
val result = withContext(Dispatchers.IO) {
runCatching { repository.getRepositories(key) }
}
onResult(result)
}
}}
ApiRepository(这里出现错误):
class ApiRepository(private val api: GitHubApi) {
fun getRepositories(key: String): Collection<Repository> {
return api.getRepository(key).await().list
}}
API:
interface GitHubApi{
@GET("search/repositories")
fun getRepository(@Query("q") query: String)
}
【问题讨论】:
标签: android kotlin retrofit kotlin-coroutines coroutinescope