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
Javascript 如何在Firebase上调用承诺';s'';在'';方法?_Javascript_Firebase_Firebase Realtime Database_Ecmascript 6_Promise - Fatal编程技术网

Javascript 如何在Firebase上调用承诺';s'';在'';方法?

Javascript 如何在Firebase上调用承诺';s'';在'';方法?,javascript,firebase,firebase-realtime-database,ecmascript-6,promise,Javascript,Firebase,Firebase Realtime Database,Ecmascript 6,Promise,我有一个databaseReference.on(“child_added”,snap=>{array.push(snap.val())} 我如何作出承诺,使我在中调用的任何函数在数组中填充数据库记录后将被初始化 上面的代码本质上是一个for循环,因为它遍历数据库记录并将它们中的每一个推送到一个数组中,所以更好的问题可能是如何在for循环中实现承诺 我发现最好的方法是在每次迭代中返回承诺,然后使用promise.all,但我不知道如何在这个特定的示例中实现它。不会生成承诺。它也不能,因为你传递

我有一个
databaseReference.on(“child_added”,snap=>{array.push(snap.val())}

我如何作出承诺,使我在
中调用的任何函数在
数组
中填充数据库记录后
将被初始化

上面的代码本质上是一个
for
循环,因为它遍历数据库记录并将它们中的每一个推送到一个数组中,所以更好的问题可能是如何在
for
循环中实现承诺

我发现最好的方法是在每次迭代中返回承诺,然后使用
promise.all
,但我不知道如何在这个特定的示例中实现它。

不会生成承诺。它也不能,因为你传递给它的侦听器将永远持续(并继续传递更改)此行为与承诺不兼容。承诺要求某些工作只执行一次,一旦完成,就不会发生任何其他会改变结果的事情

如果要在某个位置接收单个快照的数据,请使用而不是on()返回在数据可用时解析的承诺。这基本上与“添加了孩子”的侦听器不兼容,因为它们总是不断生成结果,并且永远不会以最终结果结束。

不会生成承诺。它也不能生成承诺,因为您传递给它的侦听器将永远持续(并继续提供更改)此行为与承诺不兼容。承诺要求某些工作只执行一次,一旦完成,就不会发生任何其他会改变结果的事情


如果要在某个位置接收单个快照的数据,请使用而不是on()返回一个承诺,该承诺在数据可用时得到解决。这与“child_added”侦听器基本不兼容,因为它们总是不断生成结果,从不以最终结果终止。

如何知道何时添加了
child_
“循环”已“完成”?是否有其他事件通知您?在不知道何时“完成”的情况下,承诺无助于您如何知道添加的
child\u
“循环”何时“完成”?是否有其他事件通知您?在不知道何时“完成”的情况下这是一个很好的澄清。谢谢!这是一个很好的澄清。谢谢!