Во-первых, если вы хотите получить данные только один раз, используйте once()
вместо on()
. on()
устанавливает постоянный прослушиватель, который запускается несколько раз при изменении данных в любом месте под эталонным местоположением и продолжает срабатывать до тех пор, пока вы не удалите прослушиватель. Я уверен, что это не то, что вы хотите здесь.
Во-вторых, и once()
, и on()
являются асинхронными, то есть они возвращаются немедленно, а функция обратного вызова, которую вы ей передали, выполняется некоторое время спустя. Вы не знаете, сколько времени это займет. Это означает, что ваш код продолжит выполнение после once()
или on()
, не зная результата запроса. Вот почему ваш itemList
пуст - это значение, которое вы изначально присвоили ему, и оно еще не изменилось.
Если вы хотите что-то сделать с результатами запроса, вы должны сделать это в самой функции обратного вызова или использовать обещание, возвращаемое once()
.