[英]return value from Kotlin async Coroutine
I want to return value from this function which gets data from local database:我想从这个从本地数据库获取数据的 function 返回值:
fun getAllTodo() : LiveData<List<TodoModel>>{
viewModelScope.launch(Dispatchers.IO) {
val data = async { getTodoFromDB() }
data.await()
}
}
suspend fun getTodoFromDB(): LiveData<List<TodoModel>> {
return database.getAll()
}
PS: I am new to Coroutine, might have done something silly. PS:我是 Coroutine 的新手,可能做了一些傻事。 Looking forward for Android community help
期待 Android 社区帮助
A value can't be returned from launched coroutine.无法从启动的协程返回值。 If
getTodoFromDB()
returns LiveData
object and is not suspend
, just try to call it without launching a coroutine:如果
getTodoFromDB()
返回LiveData
object 并且不是suspend
,只需尝试在不启动协程的情况下调用它:
fun getAllTodo(): LiveData<List<TodoModel>> = getTodoFromDB()
If getTodoFromDB()
is suspend
you can use liveData
builder function:如果
getTodoFromDB()
被suspend
,您可以使用liveData
builder function:
val allTodo: LiveData<List<TodoModel>> = liveData {
emitSource(getTodoFromDB())
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.