Kotlin使用协同程序从Firestore获取数据

Kotlin使用协同程序从Firestore获取数据,kotlin,google-cloud-firestore,coroutine,Kotlin,Google Cloud Firestore,Coroutine,我完全无法从Firestore获取数据,网络上有100万个解决方案(使用协程、流、try&catch、onCallback、runBlocking、.wait()、改型、ViewModel、RecycleView等),但最终没有一个能以简单的方式工作 在我这方面,我只想在参加另一个活动之前下载并存储至少2个Firestore文档中的信息。当我必须从一个文档中获取数据时,它可以正常工作(我将startActivity放在docref.get().addOnCompleteListener/if(t

我完全无法从Firestore获取数据,网络上有100万个解决方案(使用协程、流、try&catch、onCallback、runBlocking、.wait()、改型、ViewModel、RecycleView等),但最终没有一个能以简单的方式工作

在我这方面,我只想在参加另一个活动之前下载并存储至少2个Firestore文档中的信息。当我必须从一个文档中获取数据时,它可以正常工作(我将startActivity放在docref.get().addOnCompleteListener/if(task.issusccessful)/docref.get().addOnSuccessListener循环中),但由于我必须从多个docref下载数据,我尝试从主循环使用外部函数,然后我会面临异步问题

在多次尝试之后,我正在测试亚历克斯在底部描述的那个。因此,我在一个协同程序中启动了我的“获取数据”:

GlobalScope.coroutinesLaunch {getDataFromFirestore() }
我编写了相关函数:

private suspend fun getDataFromFirestore() {
    try {
        val myval1: MyClass1 = getDataFromDoc1()
        (this.application as MyApp).mydata1 = myval1
        val myval2: MyClass2 = getDataFromDoc2()
        (this.application as MyApp).mydata2 = myval2
    }
    catch (e: Exception) {
        Toast.makeText(this,"Fail",Toast.LENGTH_LONG).show()
    }
}
对于document1中的mydata1(对于其他文档中的其他数据相同)

问题是,我的数据“myval1”的值在“try”之后是正确的,但它“消失”:我没有成功地在我的“global”变量(这个.application作为MyApp.mydata1)中捕捉到它

有什么想法吗

谢谢你的帮助

private suspend fun getData1(): MyClass1 {

    val db = FirebaseFirestore.getInstance()
    val docRef = db.collection("collection_key").document("document1_key")
    val documentSnapshot = docRef.get().await()
    return documentSnapshot.toObject()!!
}