Javascript Firebase+;节点JS同步错误?

Javascript Firebase+;节点JS同步错误?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我的节点js代码如下 for(v in sna.val()){ console.log("each"+va); console.log(v); var fourthRef=ref.child(val+'/reservation/'+va+"/"+v); fourthRef.once('value').then((sn)=>{ console.log(v);

我的节点js代码如下

     for(v in sna.val()){
            console.log("each"+va);
            console.log(v);
          var fourthRef=ref.child(val+'/reservation/'+va+"/"+v);
           fourthRef.once('value').then((sn)=>{
              console.log(v);
              console.log("second val")
    });
问题是。。。 fourthRef仅搜索最后一个da086aee-3ebf-4684-b91b-53af49fe6d84节点,忽略599b04e8-5731-4ea1-a326-69a7bca2e937节点

日志如下所示。正如您可以在第二个val之前看到的值,只搜索da086aee-3ebf-4684-b91b-53af49fe6d84一个

each0CB2B77BB2BB

599b04e8-5731-4ea1-a326-69a7bca2e937

each0CB2B77BB2BB

da086aee-3ebf-4684-b91b-53af49fe6d84

da086aee-3ebf-4684-b91b-53af49fe6d84

second val

da086aee-3ebf-4684-b91b-53af49fe6d84

second val
once()
是异步的,这意味着它不会阻止循环等待它返回结果。查询结果发生在一段时间之后,可在
then()
立即返回的承诺的
once()
回调中找到


您的循环实际上是同时启动几个查询,而不是真正地等待它们中的任何一个完成。每个查询的结果都将在循环完成后输入。无论您试图做什么,您都必须重写此代码,或者以其他方式正确使用once()返回的承诺。

尝试
让fourthRef
而不是
var fourthRef