簡體   English   中英

從 Kotlin 異步協程返回值

[英]return value from Kotlin async Coroutine

我想從這個從本地數據庫獲取數據的 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:我是 Coroutine 的新手,可能做了一些傻事。 期待 Android 社區幫助

無法從啟動的協程返回值。 如果getTodoFromDB()返回LiveData object 並且不是suspend ,只需嘗試在不啟動協程的情況下調用它:

fun getAllTodo(): LiveData<List<TodoModel>> = getTodoFromDB()

如果getTodoFromDB()suspend ,您可以使用liveData builder function:

val allTodo:  LiveData<List<TodoModel>> = liveData {
   emitSource(getTodoFromDB())
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM