Javascript Firebase+;节点JS同步错误?
我的节点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);
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