来自Firebase的JavaScript变量仅出现它调用的第二次函数

时间:2018-05-31 20:18:38

标签: javascript firebase

我正在一个简单的网站上工作,所以我可以学习FireBase和Javascript。当我想要检索特定照片时,我遇到了一个问题。

 function load(){
 let ext = null;
    var postRef = firebase.database().ref('posts/' + viewNumber +'/fileType');
    postRef.on('value', function(snapshot) {
    var value = snapshot.val();

  if (value === null) {
    return;
  }

  ext = value;

});
    console.log(viewNumber);
    console.log(ext);
    var storage = firebase.storage();
    var pathReference = storage.ref('posts/'+ viewNumber +'.'+ext);
    pathReference.getDownloadURL().then(function(url) {
    // Or inserted into an <img> element:
      var img = document.getElementById('post');
      img.src = url;
      });

  // A full list of error codes is available at
  // https://firebase.google.com/docs/storage/web/handle-errors
  };

由于某种原因,我第一次运行该函数,ext = null但第二次,它是正确的图像类型。当我更改viewNumber并再次调用load()时,它会做同样的事情,返回null然后第二次返回正确的扩展名。我以为我每次都可以运行两次这个功能,但我知道这不合适。有人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

试一试:

=index(inventory[qty], match(K6, inventory[description], 0))

唯一能确保来自firebase请求的数据存在的地方就在回调中。

看看这个article,了解js和回调是如何工作的。