如果这是一个业余问题,请原谅我,我是第一次接触API。 我一直在与Firebase合作,以存储在整个脚本中使用的“得分”列表数组。 在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

===============>>#1 票数:1 已采纳

这不是每个问题的范围问题。 Firebase异步返回数据。

Firebase通过网络下载数据。 它异步执行此操作,因此不会阻止UI活动。 最终将下载,但不会在您将其登录到脚本中时下载。

您可以使用一些选项来处理异步数据。

  1. .on()函数中执行所有逻辑。
  2. 使用可观察的框架或其他类似Angular + AngularFire的框架来简化异步数据。

  ask by Andy translate from so

未解决问题?本站智能推荐: