addValueEventListener () является асинхронным и возвращается немедленно.Прослушиватель, которого вы передали ему, будет вызван через некоторое время, когда результаты станут известны.Это означает, что вы возвращаете изначально пустой templates
.Тот, кто держится за templates
, может удивиться, если и когда содержимое обновится в непредсказуемое время после возврата вашей функции.Мало того, что содержимое будет продолжать меняться со временем, так как ваш слушатель будет вызываться с каждое изменение в местоположение, представленное debatesChildren
.Это действительно ужасная ситуация.
Прежде всего, если вам нужен доступ к данным только один раз, вы должны использовать addListenerForSingleValueEvent () , чтобы ваш слушатель вызывался только один раз.
Во-вторых, вы не должны пытаться сделать асинхронный вызов, подобный этому, синхронному вызову.Некоторым другим частям вашего кода нужны результаты запроса к базе данных, которые они должны получать через обратный вызов, а не через возвращаемое значение функции.Вам нужно будет выяснить, как вы хотите выполнять асинхронное программирование в своем приложении, и подключить его по своему усмотрению.