Task
- это то, чего вы ждете, но вы завернули его в другой слой async
. Удалить async
:
fun getOwner() {
runBlocking {
var de = firestore.collection("Chat").document("cF7DrENgQ4noWjr3SxKX").get()
var result = de.await().result
}
}
Однако, используя runBlocking()
, вы попали себе в ногу и написали код блокировки, который просто формально использует асинхронный API, но безрезультатно.
Чтобы по-настоящему извлечь из этого пользу, вы должны иметь
suspend fun getOwner() = firestore
.collection("Chat")
.document("cF7DrENgQ4noWjr3SxKX")
.get()
.await()
.result
и launch
сопрограмма в том месте, откуда вы ее называете:
launch {
val owner = getOwner()
// update the GUI
}
Предполагается, что вы вызываете launch
с объекта, который является CoroutineScope
.