Итак, я пытаюсь сделать так, чтобы в игру вошли два игрока, и я борюсь за время выполнения цикла for.Я использую Firebase Firestore в качестве моего бэкенда.Я хочу, чтобы каждая итерация цикла ожидала завершения последней, потому что каждая транзакция внутри цикла занимает секунду или две, и я хочу присоединиться только к одной игре.Прямо сейчас он в основном объединяет все пустые игры, потому что цикл 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)
}
}
Любой совет будет полезен.Спасибо!