addValueEventListener () является асинхронным, что означает, что он немедленно возвращается к вызывающей стороне, в то время как Firebase SDK отправляется и делает запрос на сервер, пока ваш код продолжает выполняться. Обратный вызов, который вы передаете ему, происходит через некоторое время, после запрос завершен. Вы не знаете, как долго это будет продолжаться, и вы не должны делать никаких предположений по этому поводу. Прямо сейчас ваш код предполагает, что результаты доступны сразу после добавления прослушивателя, и это неверно.
Если вы хотите получить результаты слушателя, вы должны делать это только изнутри слушателя. Вы не можете ожидать, что результаты будут доступны раньше.
Если вы хотите узнать больше о том, почему API Firebase являются асинхронными, прочтите этот блог .