请原谅我,如果这是一个业余问题,我是使用API的新手。我一直在与Firebase合作存储一个"分数"在我的脚本中使用的list数组。在其中一个Firebase函数中,值已更新,但该值未在全局范围内更新。我不确定此时我失踪了什么。这是一段代码片段,0和1的值记录在控制台上。
window.global_counter = 0;
window.score = 0;
window.listScores = {"GMS":0, "Vacc":0, "CH":0, "GSF":0, "Pharm":0, "GF":0, "Pharma":0, "Sti":0};
var ref = new Firebase("https://xxx-xxx-xxx-xxx.firebaseio.com/");
// show chart data
ref.on("value", function(snapshot){
listScores["GMS"] = snapshot.child("GMS").numChildren();
console.log("listScores['GMS'] inside: " + listScores["GMS"]);
// 1
listScores["Vacc"] = snapshot.child("Vacc").numChildren();
listScores["CH"] = snapshot.child("CH").numChildren();
listScores["GSF"] = snapshot.child("GSF").numChildren();
listScores["Pharm"] = snapshot.child("Pharm").numChildren();
listScores["GF"] = snapshot.child("GF").numChildren();
listScores["Pharma"] = snapshot.child("Pharma").numChildren();
listScores["Sti"] = snapshot.child("Sti").numChildren();
});
console.log("listScores['GMS'] outside: " + listScores["GMS"]);
// 0
答案 0 :(得分:1)
这不是每个人说的范围问题。 Firebase异步返回数据。
Firebase通过网络下载数据。它以异步方式执行此操作,因此不会阻止UI活动。最终将下载,但不会在您在脚本中记录时。
您可以使用一些选项来处理异步数据。
.on()
函数中执行所有逻辑。