这可能会很简单,但我在Angular中遇到了很多这个问题,我需要一些解释。我试图做的就是获取快照函数之外的变量值。如果我可以做这样的事情
let testVariable : string;
var testCount = firebase.database().ref('users/' + userName + '/userName');
testCount.on('value', function (snapshot) {
testVariable = snapshot.val();
});
alert(testVariable); //comes out undefined
谢谢
答案 0 :(得分:0)
问题是您的代码是异步运行的。这意味着javascript将调用firebase并立即调用alert函数,而不等待任何响应。您的警报必须放在回调中,或者在设置变量后调用。
如果你正在使用"这个"你可能在函数中访问它时遇到问题。如果是这样,请将函数语法更改为如下箭头:
testCount.on('value', (snapshot) => {
this.testVariable = snapshot.val();
});