android 如何在视图模型中正确处理异步请求的响应?

jq6vz3qz  于 2023-03-16  发布在  Android
关注(0)|答案(1)|浏览(121)

我有一个本地模拟仓库,它以Result格式返回结果。结果可能成功,也可能不成功。另外,我有一个视图模型,以及一个包含ListView和TextView的片段。如何在视图模型中正确处理这个结果,并在片段中显示它?也就是说,如果答案成功,我会在ListView中显示列表,如果失败,我显示了带有错误消息的TextView,问题是如何处理Result类型的对象
抱歉问了这个可能很愚蠢的问题,我只是在学习:)
编辑:抱歉,我的问题是如何正确地处理getAuthors函数的结果,当Result.Failure发生时,如何处理?

suspend fun getAuthors(): Result<List<Author>> {
        randomDelay()
        return randomResult(
            listOf(
                Author(
                    authorIds[0],
                    "Author One"
                ),
                Author(
                    authorIds[1],
                    "Author Two"
                ),
            )
        )
    }
private suspend fun randomDelay() {
        delay((100L..1000L).random())
    }

    private fun <T> randomResult(data: T): Result<T> =
        if ((0..100).random() < 5) {
            Result.failure(RuntimeException())
        } else {
            Result.success(data)
        }
}
toiithl6

toiithl61#

我至少需要一些关于如何使用Result类的示例

coroutineScope.launch {
    val result = getAuthors()
    
    if (result.isFailure) {
        // Handle Failure
    }
    else {
        // Handle success
    }

    // OR
    result.onFailure { exception ->
        // Handle Failure
    }.onSuccess { value ->
        // Handle success
    }
}

相关问题