函数内的javascript变量不变

时间:2018-09-21 16:36:56

标签: javascript variables parameters

我正在使用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,正在异步函数中进行更新,我该如何解决这种情况?

1 个答案:

答案 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);
    }
  });