检测 Firebase 初始 on(value) 完成

Detect Firebase initial on(value) completion

当我初始化我的应用程序以从 FB 检索我的所有数据时,我正在使用 ref.on("value", myfunc)。由于有相当多的数据要检索,我想显示一个加载符号,直到 myfunc 实际获得 运行.

有什么办法吗?我现在唯一能想到的方法是:

  1. 先运行在相关FB节点上hasChildren查看是否有数据接收
  2. 如果有,显示加载图像。
  3. 一旦 on 侦听器调用 myfunc 然后隐藏加载图像。

我只是想知道 Firebase 是否提供了一种更优雅的方式来执行此操作?

我错过了明显的解决方案。给myfunc传一个回调函数,就是说我可以发起加载图片,当回调函数为运行.

时,我就可以把它移除了

也许我误解了你在做什么,但我认为你甚至不需要打电话给 hasChildren。即使该位置没有 children,您传递给 ref.on() 的回调函数也会被调用。

举个例子:http://jsfiddle.net/92uabp30/7/

我认为这与您所做的类似。这里我有一个 "Loading..." div 和一个 "output" 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,您会发现它是空的。当你 运行 这个例子时,你会看到回调函数无论如何都会被调用。