当前位置: 首页 > 知识库问答 >
问题:

未解析的引用:等待。科特林·科鲁廷斯

阳福
2023-03-14
fun getRepositoryList()  {
    getRepositoriesUseCase(textLiveData.value.toString(), viewModelScope) { result ->
        result.onSuccess { repositoriesList.value = it }
        result.onFailure { show(it.message.toString()) }
    }
}
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)
    }
}}
class ApiRepository(private val api: GitHubApi) {

fun getRepositories(key: String): Collection<Repository> {
    return api.getRepository(key).await().list
}}
interface GitHubApi{

@GET("search/repositories")
fun getRepository(@Query("q") query: String)
}

共有1个答案

汪弘盛
2023-03-14

您没有在GitHubapi中指定函数的返回类型。如果要使用Kotlin相关项,还应该将此方法标记为suspend。您的api接口应该如下所示:

interface GitHubApi {

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

}

在repository类中,您应该简单地将一个挂起函数传递给一个用例,如下所示:

class ApiRepository(private val api: GitHubApi) {

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

这应该能解决你的问题。

 类似资料:
  • 问题内容: 我正在学习具有C ++和Java背景的Kotlin。我期待下面的打印,不。我知道这对应到。默认实现不比较每个成员,即和吗?如果是这样,它会不会看到字符串值相等(因为再次映射到字符串值)?显然,我在Kotlin中还没有涉及平等与身份相关的问题。 问题答案: 您描述的默认实现仅适用于数据类。不适用于从中继承实现的常规类,只需使对象与自身相等即可。

  • 我有一个用户登录的函数。但它被暂停了。我试着获取它的返回值,但我做不到。这就是我想做的 代码 我称之为 我有错误 E/AndroidRuntime:致命异常:主进程:ru.gkomega.navigation,pid:11863java.lang.IllegalStateException:已在kotlin.coroutines.safeContinuation.ResumeWith(safeCo

  • 如何在使用Kotlin的Spring Boot中正确初始化ConfigurationProperties? 目前我喜欢下面的例子: 但是它看起来很丑陋,实际上不是一个iable,foo是常量ue,应该在启动期间初始化,将来不会改变。

  • 这是正确的吗? 我可以找到一个相关的问题,但它是有参数的,我不能在没有params的情况下转换它。