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
“循环”何时“完成”?是否有其他事件通知您?在不知道何时“完成”的情况下这是一个很好的澄清。谢谢!这是一个很好的澄清。谢谢!