Действительно, eventListeners
ведут себя асинхронно, и, таким образом, вы правильно поняли свою проблему.
К сожалению, у меня есть решение, что вам, возможно, придется изменить свой подход из-за этого Таким образом, вы должны пойти на подход, ориентированный на события. Следовательно, вместо того, чтобы «ждать поступления данных и затем делать свое дело», я бы «когда данные поступают, делаю свое дело».
В зависимости от вашей проблемы, напечатайте значение в методе onDataChange()
вашего singleValueEventListener
, это будет гарантировать, что вы не получите нулевое значение, а также вы получите правильное значение.
Кроме этого, еще один подход, который я нашел, когда искал, это Task.await()
. Я не буду рассчитывать на это, но вы можете прочитать об этом здесь:
StackOverflow Вопрос
StackOverflow Ответ