推送到"然后"条款,但它是空的

时间:2017-06-19 09:21:41

标签: firebase promise

我将一些来自firebase数据库的密钥添加到一个数组中,但它仍然是空的。代码如下:

ref.once("value")
    .then(function(snapshot) { 
      snapshot.forEach(tag =>{
        tags1.push(tag.key);           
      })         
  });

我通过在tag.key内的控制台上打印来检查forEach的值,并正确打印所有键。

然后,我尝试在forEach数组上执行tags1,但它没有输入for。我打印了tags1的长度,它是0。

我以这种方式宣布tags1

let tags1 = [];

我也尝试将其声明为Array<any>,但它一直保持空白。

1 个答案:

答案 0 :(得分:2)

让我们回顾一下事情发生的顺序:

const tags1 = [];                     // 1 -- EMPTY

ref.once("value")                     // 2 -- EMPTY
    .then(function(snapshot) { 
      snapshot.forEach(tag => {
        tags1.push(tag.key);          // 4 -- GETS NEW VALUES        
      });
      console.log(tags1);             // 5 -- HAS ALL VALUES
  });

console.log(tags1);                   // 3 -- STILL EMPTY!