Javascript 如何在childsnapshot完成执行后调用函数
我想调用一个函数,一旦所有的子快照都执行完毕 进一步阐述: 我有一个数据集假设-kvbd…sd,它有两个子数据集 -kvbd…sd ---------->-fdvdv-…jh ---------->-fgshs..shsh 我想在两个子节点的处理完成后调用该函数 ---------->-fdvdv-…jh ---------->-fgshs..shsh 我的代码:Javascript 如何在childsnapshot完成执行后调用函数,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我想调用一个函数,一旦所有的子快照都执行完毕 进一步阐述: 我有一个数据集假设-kvbd…sd,它有两个子数据集 -kvbd…sd ---------->-fdvdv-…jh ---------->-fgshs..shsh 我想在两个子节点的处理完成后调用该函数 ---------->-fdvdv-…jh ---------->-fgshs..shsh 我的代码: dRef .once("value") .then (
dRef
.once("value")
.then
(
function(snapshot)
{
snapshot.forEach(
function(childsnapshot)
{
var data=childsnapshot.val();
var Apdate=data.Dateval;
for (i = 0; i < sel.options.length; i++)
{
var datein=sel.options[i].value;
console.log("check:"+datein);
if(datein==Apdate)
sel.options[i].disable = true;
console.log("Success:!!!!!!");
}
pass();
}
}
}
);
dRef
.一次(“价值”)
.那么
(
功能(快照)
{
快照.forEach(
功能(儿童快照)
{
var data=childsnapshot.val();
var Apdate=data.Dateval;
对于(i=0;i
您可以通过Promise
s尝试以下内容:
ref.once('value')
.then(function(snapshot) {
var myFunctToRunAfter = function () {
console.info('RUN AFTER THE LOOP')
}
return new Promise(function(resolve, reject) {
snapshot.forEach(function(child) {
console.log('I am a child ' + child.val())
})
/* Call the function after the loop */
resolve(myFunctToRunAfter())
})
.then(function() {
/* I could do something here */
console.log(snapshot.val())
console.info('RUN LAST')
})
})
以下是一个工作示例:
var配置={
apiKey:“AIzaSyCDyoPVmi2rLIFtb55eTGYYPMsxFR3uuMs”,
authDomain:“test-514b2.firebaseapp.com”,
数据库URL:“https://test-514b2.firebaseio.com",
storageBucket:“test-514b2.appspot.com”,
messagingSenderId:“773249287825”
};
firebase.initializeApp(配置);
var ref=firebase.database().ref();
参考一次(“值”)
.then(功能(快照){
var myFunctToRunAfter=函数(){
console.info('在循环之后运行');
}
返回新承诺(功能(解决、拒绝){
snapshot.forEach(函数(子函数){
console.log('我是一个孩子'+child.val())
})
/*在循环之后调用函数*/
解析(myFunctToRunAfter())
})
.然后(()=>{
/*我可以在这里做点什么*/
console.log(snapshot.val())
console.info('RUN LAST')
})
})
我可以对主快照和子快照做出类似的承诺吗also@joel-我相信你能