2015-04-07 2 views
1

Я использую ref.on("value", myfunc), когда я инициализирую свое приложение, чтобы извлечь все мои данные из FB. Поскольку для получения данных требуется довольно много данных, я хочу показать символ загрузки, пока myfunc не будет запущен.Detect Firebase initial on (value) complete

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

  1. Сначала запустить hasChildren на соответствующем узле FB, чтобы проверить, есть ли данные, которые будут получены.
  2. Если есть, отобразите загружаемое изображение.
  3. После того, как слушатель on вызывает myfunc, тогда скройте загружаемое изображение.

Мне просто интересно, обеспечивает ли Firebase более изящный способ сделать это?

ответ

1

Возможно, я не понимаю, что вы делаете, но я не думаю, что вам даже нужно позвонить hasChildren. Вызовите функцию обратного вызова, которую вы перейдете на ref.on(), даже если в этом месте нет детей.

Вот пример: http://jsfiddle.net/92uabp30/7/

Я думаю, что это похоже на то, что вы делаете. Здесь у меня есть «Загрузка ...» div, и «выход» div:

function getMyData(){ 
    $("#loading").show(); 
    $("#output").hide(); 

    new Firebase("https://examples-sql-queries.firebaseio.com/user/999").on('value', show); 
} 

А функция обратного вызова:

function show(snap) { 
    $('pre').text(JSON.stringify(snap.val(), null, 2)); 
    $("#output").show(); 
    $("#loading").hide(); 
} 

Если вы проверяете https://examples-sql-queries.firebaseio.com/user/999, вы увидите, что он пуст , Когда вы запустите пример, вы увидите, что функция обратного вызова вызывается в любом случае.

+0

Вы правы - я не понял, что обратный вызов запускается, даже если узел пуст. Благодаря! – quijames

1

Я пропустил очевидное решение. Передача функции обратного вызова в myfunc означает, что я могу инициировать загрузочное изображение и удалять его при выполнении функции обратного вызова.