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
Firebase 推送到“a”中的数组;然后";但是它';它是空的_Firebase_Promise - Fatal编程技术网

Firebase 推送到“a”中的数组;然后";但是它';它是空的

Firebase 推送到“a”中的数组;然后";但是它';它是空的,firebase,promise,Firebase,Promise,我正在将firebase数据库中的一些密钥添加到数组中,但它仍然为空。代码如下: ref.once("value") .then(function(snapshot) { snapshot.forEach(tag =>{ tags1.push(tag.key); }) }); 我通过在forEach内的控制台上打印tag.key来检查它的值,并且所有的键都打印正确 然后,我尝试在tags1数组上

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

ref.once("value")
    .then(function(snapshot) { 
      snapshot.forEach(tag =>{
        tags1.push(tag.key);           
      })         
  });
我通过在
forEach
内的控制台上打印
tag.key
来检查它的值,并且所有的键都打印正确

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

我已经这样声明了
tags1

let tags1 = [];

我还试图将它声明为
数组
,但它一直保持为空

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

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!

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

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!

将不会在
then
子句之外填充
tags1
数组。这是异步概念的基础。这与typescript、ionic或firebase无关。您的意思是“
。然后(
我尝试对tags1数组
”?将不会在
then
子句之外填充
tags1
数组。这是异步概念的基础。这与typescript、ionic或firebase无关。您的意思是“
。然后(
我尝试对标记1数组执行forEach
”?