2015-09-16 171 views
0

裏面工作,我有這樣的代碼:火力地堡推不值事件

var firebase = new Firebase('https://<MY_APP>.firebaseio.com'); 
    var users = firebase.child('users'); 
    var usersDefer = $.Deferred(); 
    var userName; 
    if (window.localStorage) { 
    userName = localStorage.getItem('username'); 
    if (!userName) { 
     function newUser(users) { 
     if (userName) return; 
     var newUserName = prompt('Enter Username:'); 
     if (users.indexOf(newUserName) !== -1) { 
      alert('Username already taken'); 
      newUser(users); 
     } else { 
      localStorage.setItem('username', newUserName); 
      userName = newUserName; 
      console.log('push'); 
      // this push don't work 
      users.push({ 
      name: newUserName 
      }); 
      console.log('after'); 
     } 
     } 
     usersDefer.then(newUser); 
    } 
    } 
    users.once('value', function(snapshot) { 
    var value = snapshot.val() 
    if (value) { 
     var users = Object.values(value).map(function(object) { 
     return object.name; 
     }); 
     usersDefer.resolve(users); 
    } else { 
     usersDefer.resolve([]); 
    } 
    }); 

users.push({ 
    name: newUserName 
}); 

不工作,除非我用的開發者控制檯,任何人有一個線索,爲什麼?

UPDATE

同樣發生,如果我用這個代碼,而jQuery的遞延

users.once('value', function(snapshot) { 
    function newUser(users) { 
     if (userName) return; 
     var newUserName = prompt('Enter your username'); 
     if (users.indexOf(newUserName) !== -1) { 
     alert('Username already taken'); 
     newUser(users); 
     } else { 
     userName = newUserName; 
     if (window.localStorage) { 
      localStorage.setItem('username', newUserName); 
     } 
     console.log('push'); 
     users.push({ 
      name: userName 
     }); 
     console.log('after'); 
     } 
    } 
    var value = snapshot.val() 
    var users; 
    if (value) { 
     users = Object.values(value).map(function(object) { 
     return object.name; 
     }); 
    } else { 
     users = []; 
    } 
    if (window.localStorage) { 
     userName = localStorage.getItem('username'); 
     if (!userName) { 
     newUser(users); 
     } 
    } else { 
     newUser(users); 
    } 
    }); 
+0

你可以把這個在JSBin? –

+0

@DavidEast http://jsfiddle.net/5tkbzwn3/ – jcubic

回答

0

的問題是,我用的是同一個變量users的火力參考和用戶的列表。