我正在使用Firebase,所以我的函数具有异步嵌套函数,如下所示:
./me/onenote/pages/1-1c13bcbae2fdd747a95b3e5386caddf1!1-xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/content?includeIDs=true&includeInkML=true&preAuthenticated=true
它不起作用,因为var var invld = 0;
ref.child(userId).orderByChild('name').equalTo(listName).on("value",
function(snapshot) {
if (snapshot.exists()){
invld = 1;
alert(invld);
return false;
}
});
alert(invld);
if (invld == 1) {
// exit from the main function
overwritePrompt();
return false;
}else{
// Save on firebase
database.ref().child('users').child(userId).push('list').set(data);
}
始终为0,正在异步函数中进行更新,我该如何解决这种情况?
答案 0 :(得分:0)
您的代码是异步的,因此在所有同步代码完成之前,不会调用该函数。您应该将所有检查移到回调中,然后代码才能正确执行。
ref.child(userId).orderByChild('name').equalTo(listName).on("value",
function(snapshot) {
if (snapshot.exists()){
overwritePrompt();
return false;
} else {
database.ref()
.child('users').child(userId).push('list').set(data);
}
});