未解决的参考:等待。Kotlin协程

卡罗尔

我正在尝试使用Retrofit 2和协程从Api获取数据。从我的GetRepositoriesUseCase启动协程,但是'await()'函数是一个未解决的引用。

ViewModel:

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)
}
官方

您没有在中指定函数的返回类型GitHubApi如果您想使用Kotlin协程,还应该将此方法标记为suspend您的api界面应如下所示:

interface GitHubApi {

@GET("search/repositories")
suspend fun getRepository(@Query("q") query: String): Collection<Repository>

}

在存储库类中,您只需将暂停函数传递给如下用例:

class ApiRepository(private val api: GitHubApi) {

suspend fun getRepositories(key: String): Collection<Repository> {
    return api.getRepository(key)
}}

这应该可以解决您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Kotlin协程壁垒:等待所有协程完成

来自分类Dev

Kotlin:未解决的参考:javaClass

来自分类Dev

NetworkBoundResource与Kotlin协程

来自分类Dev

测试是否等待协程

来自分类Dev

让协程等待先前的呼叫

来自分类Dev

协程不等待秒

来自分类常见问题

IntelliJ中未解决的Kotlin参考

来自分类Dev

Kotlin中Dagger 2的未解决参考

来自分类Dev

Gradle(Kotlin DSL):“未解决的参考:proguard”

来自分类Dev

'by viewModels()'Kotlin属性委托未解决的参考

来自分类Dev

Kotlin公开的未解决参考:referencedOn

来自分类Dev

未解决的参考:viewModelScope - Kotlin Android

来自分类Dev

调用并行协程并等待所有协程结束

来自分类Dev

在Kotlin中测试协程

来自分类Dev

Kotlin 协程范围定义

来自分类Dev

Kotlin 协程,持续更新

来自分类Dev

Kotlin:如何在不运行runBlocking的情况下等待协程停止运行?

来自分类Dev

如何并行运行多个Kotlin协程并等待它们完成后再继续

来自分类Dev

Python asyncio取消未等待的协程

来自分类Dev

如何等待协程结束

来自分类Dev

Python asyncio取消未等待的协程

来自分类Dev

未解决的参考:DaggerTestComponent(带有Dagger的Kotlin用于测试)

来自分类Dev

Kotlin 1.3.50打包未解决的参考错误

来自分类Dev

Android Studio-Kotlin Project的“未解决的参考”问题

来自分类常见问题

Kotlin协程如何比RxKotlin更好?

来自分类Dev

Kotlin协程列表返回空值

来自分类Dev

关于Kotlin协程取消的问题

来自分类Dev

Kotlin协程主管取消作业的行为

来自分类Dev

Kotlin协程-延迟,如何运作?