这是我的代码:
document.getElementById('revealUser').onclick = displayDaUsers
function displayDaUsers(){
pullAllUsersFromDB();
debugger;
}
function pullAllUsersFromDB(){
rootRef.child('users').on('value', function(snapshot) {
var users_array = [];
var users_object = snapshot.val();
Object.keys(users_object).map(function(key) {
users_array.push(users_object[key]);
});
// window.dateApp.allUsers = users_array;
return users_array
});
}
HTML:
<input type="submit" id="revealUser" value="reveal user">
我放了一个调试器来查看问题,但它没有帮助。当我进入控制台并输入users_array
时
我得到Uncaught ReferenceError: users_array is not defined(…)
新法典(编辑):
根据另一个stackoverflow答案,这应该工作..
function displayDaUsers(){
var test = pullAllUsersFromDB();
console.log(test);
//pullAllUsersFromDB();
//debugger;
//setUpFirstUser()
}
function pullAllUsersFromDB(){
rootRef.child('users').on('value', function(snapshot) {
var users_array = [];
var users_object = snapshot.val();
Object.keys(users_object).map(function(key) {
users_array.push(users_object[key]);
});
//window.dateApp.allUsers = users_array;
return users_array
});
}
答案 0 :(得分:0)
返回值users_array
是匿名回调函数function(snapshot) {...
范围的本地值。换句话说,它的价值在该范围之外就失去了。
您的逻辑中的哪一点需要访问user_array
?如果需要在函数上下文之外访问它,可能有意义的是定义一个具有更大范围的变量,然后在匿名函数中设置它的值。 E.g。
document.getElementById...
var arr;
...
function pullAllUsersFromDB() {
...
...function(snapshot) {
arr = users_array;
});
}
// pullAllUsersFromDB() (and its callback) must be called for arr to be defined at this point in execution