Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
聚合物Firebase:打印异步数据_Firebase_Polymer - Fatal编程技术网

聚合物Firebase:打印异步数据

聚合物Firebase:打印异步数据,firebase,polymer,Firebase,Polymer,用firebase试用聚合物0.8。我无法打印正在异步绑定的数据 <dom-module id="card-user"> <template> <div>{{name}}</div> </template> </dom-module> 无法返回异步加载的值 您的getFirebase方法将在Firebase加载完成和打开(“值”回调触发之前退出(并返回undefined) 如果向该函数添加一些日志记录,则最

用firebase试用聚合物0.8。我无法打印正在异步绑定的数据

<dom-module id="card-user">
  <template>
    <div>{{name}}</div>
  </template>
</dom-module>

无法返回异步加载的值

您的
getFirebase
方法将在Firebase加载完成和
打开(“值”
回调触发之前退出(并返回
undefined

如果向该函数添加一些日志记录,则最容易看到:

    getFirebaseName: function(id) {
        var ref = new Firebase('https://xxx.firebaseio.com/users/' + id + '/name');
        console.log("Start loading value from Firebase");
        ref.once("value", function(snapshot) {          
          console.log("Value gotten from Firebase");
          return snapshot.val();
        }, function (errorObject) {
          console.log("The read failed: " + errorObject.code);
        });
        console.log("Returning from getFirebaseName");
    }
您将在JavaScript控制台中看到:

Start loading from Firebase
Returning from getFirebaseName
Value gotten from Firebase
直观地说,您可能期望最后两行被交换。但异步加载的工作原理并非如此:Firebase开始加载数据,但由于这可能需要相当长的时间,浏览器只需在加载后继续执行代码

一个典型的解决方案是对回调中的值执行任何您想执行的操作:

    getFirebaseName: function(id) {
        var ref = new Firebase('https://xxx.firebaseio.com/users/' + id + '/name');
        ref.once("value", function(snapshot) {          
          console.log(snapshot.val());
        }, function (errorObject) {
          console.log("The read failed: " + errorObject.code);
        });
    }
我们现在在这里记录
snapshot.val()
当然,您也可以将新值添加/设置到DOM中

你也可以考虑回信,但我会把这个留给其他人解释

看看这个答案或其中的一些链接:。人们经常被这种反直觉的行为所困扰,阅读别人的经验,答案也可能对你有所帮助

    getFirebaseName: function(id) {
        var ref = new Firebase('https://xxx.firebaseio.com/users/' + id + '/name');
        ref.once("value", function(snapshot) {          
          console.log(snapshot.val());
        }, function (errorObject) {
          console.log("The read failed: " + errorObject.code);
        });
    }