【发布时间】:2018-09-11 23:32:30
【问题描述】:
所以我试图将两个玩家匹配到一个游戏中,并且正在努力解决 for 循环执行时间问题。我正在使用 firebase firestore 作为我的后端。我希望每个 for 循环迭代都等到最后一个完成,因为循环内的每个事务都需要一两秒钟,我只想加入一个游戏。现在它基本上加入了所有空游戏,因为 for 循环不等待最后一个循环完成。我相信这是一个异步/同步问题。
这是我的 for 循环代码:
for (document: DocumentSnapshot in task.result) {
firestoreInstance.runTransaction(Transaction.Function<Void> { transaction ->
val snapshot = transaction.get(document.reference)
transaction.update(document.reference, "joiner", FirebaseAuth.getInstance().uid)
// Success
null
}).addOnSuccessListener {
Log.d(TAG, "Transaction success!")
onComplete(document.reference)
gameJoined = true
}.addOnFailureListener { e ->
Log.w(TAG, "Transaction failure.", e)
onComplete(null)
}
}
任何建议都会有所帮助。谢谢!
【问题讨论】:
标签: android firebase for-loop kotlin google-cloud-firestore