2016-02-22 13 views
0

Позвольте мне сначала сказать, что я новичок в firebase. Как я уже играл с angularfire на некоторое время, я заметил, что $ firebaseArray был своего рода медленный в моем проекте ...

Но когда я использовал консоль, чтобы найти , когда был получен результат от firebase, я понял, что был второй, прежде чем этот результат был показан в ионном виде после его прибытия.

Если то, что я хочу сказать, что не совсем понятно, вот codepen с $ firebaseArray

var lists = $firebaseArray(ref.child('lists')); 

А вот другой [codepen] (извините не могу добавить больше, чем две ссылки), где Я добавил эту линию после он

lists = [{"name":"test"}];

Существует лог оповещения и консоль в обоих codepen, который показывает, когда пришли данные.

Что я спрашиваю: почему есть вторая задержка после как данные уже прибыл?

EDIT:

Потому что «медленный» на самом деле не значит ничего, я взял скриншот сети моего браузера в первый codepen, показывающий, сколько времени требуется, чтобы отобразить данные: screenshot

+1

«медленный» является весьма субъективным. Какое действие вы измеряете? Сколько времени это занимает? Как долго вы это ожидаете? Также обратите внимание, что, хотя здорово, что вы добавили ссылку на кодировщик, ваш вопрос должен включать минимальный код для воспроизведения проблемы. –

+0

Я имею в виду «медленный», потому что данные уже были получены с firebase (в моем кодефене он доступен, когда появляется предупреждение), а затем есть время до его отображения (для его отображения требуется около 1 или 2 секунды Я думаю, что это _lot_, так как данные уже прибыли. Все, что нужно сделать, это отобразить его, но для этого все еще требуется несколько секунд). Поэтому я попытался сделать это с помощью локального массива JSON, и на этот раз после того, как данные будут доступны (одно и то же предупреждение), оно будет отображаться мгновенно ... –

+0

Он быстро показывает мне, как 0..0001 миллисекунды ... Вероятно, это связано с вашим компьютером. Я не могу сказать ничего об этом .. – amanuel2

ответ

0

несмотря на то, что я не был на самом деле искал его, когда я нашел эту тему, ответ на мой вопрос был дан здесь:

Asynchronous access to an array in Firebase

К тому времени, когда браузер выполнит ваш console.log (userTokens); данные, скорее всего, еще не загружены. Поэтому он просто печатает объект на консоли в качестве заполнителя.

К моменту, когда он попадает в цикл for, данные могут или не могут иметь , загруженные из Firebase.

В какой-то момент вы нажали стрелку рядом с зарегистрированным пользователемTokens. В это время, которое данные загрузили из Firebase, а на консоли показаны последние данные .

Так или иначе, спасибо за вашу помощь в попытке ответить на мой вопрос :)