小编nsk*_*nsk的帖子

在 Kotlin 协程中等待 LiveData 结果

我有一个带有异步方法的存储库类,返回User包装成一个LiveData

interface Repository {
    fun getUser(): LiveData<User>
}
Run Code Online (Sandbox Code Playgroud)

在 ViewModel 的 couotine 范围中,我想等待getUser()方法的结果并使用User实例。

这就是,我正在寻找:

private fun process() = viewModelScope.launch {
   val user = repository.getUser().await()
   // do something with a user instance
}
Run Code Online (Sandbox Code Playgroud)

我找不到LiveData<>.await()扩展方法,以及任何实现它的尝试。所以在我自己做之前,我想知道也许有更好的方法吗?

我发现所有的解决方案都有关使getUser()一个suspend方法,但如果我不能改变什么Repository

android kotlin android-livedata kotlin-coroutines

4
推荐指数
1
解决办法
2890
查看次数