我想编写一个函数,该函数返回一个包含文档ID的列表。 为了从数据库(Cloud Firestore)中读取数据,我使用OnCompleteListener。 到目前为止,这是我的代码:
private fun getInvolvedChannels(): MutableList<String> {
var involvedList = mutableListOf<String>()
val currentUserId = FirebaseAuth.getInstance().currentUser?.uid
firestoreInstance.collection("users").document(currentUserId!!).collection("engagedChatChannels").get()
.addOnCompleteListener ( object : OnCompleteListener<QuerySnapshot> {
override fun onComplete(task: Task<QuerySnapshot>) {
task.result.documents.forEach {
val currentChannelId = it.id.toString()
involvedList.add(currentChannelId)
}
}
})
involvedList = buildChatChannelString(involvedList)
return involvedList
}
阅读部分已经可以正常工作。问题在于,该列表在侦听器甚至是红色Id之前就已返回。因此,它总是返回一个空列表。我的错误在哪里?如何确保侦听器在返回列表之前完成?