【发布时间】:2020-12-11 11:59:11
【问题描述】:
我正在使用 kotlin 制作一个 android 应用程序,但我目前面临一个奇怪的问题。问题所在的函数是这样的:
private fun getName(uids:List<String>):List<String> {
val nameList = mutableListOf<String>()
for (uid in uids) {
Firebase.firestore.collection("users").whereEqualTo("id", uid).get().addOnSuccessListener { documents ->
val name = documents.documents[0]["name"] as String
println("The name is $name")
nameList.add(name)
println("The namelist is $nameList")
}
println("The data above is $nameList")
}
println("The datahere is $nameList")
return nameList.toList()
}
这里我有一些用户 ID,基于这些 ID,我从 Firebase Cloud Firestore 数据库中获取名称,数据被成功获取,当我第一次在获取块内打印 namelist 时,正在添加一个元素。但是,当我在提取块之外打印 nameList 时,我看到该元素没有添加。我附上了一张图片。
如您所见,正在添加元素。但在那之后,元素消失,列表变为空。
我真的很困惑为什么会这样。
【问题讨论】:
-
addOnSuccessListener函数接受一个在下载数据时调用的回调。这发生在当前函数使用 print 语句执行之后。
标签: android firebase kotlin asynchronous google-cloud-firestore