【问题标题】:Can't assign C# variable value properly when using Firebase使用 Firebase 时无法正确分配 C# 变量值
【发布时间】:2018-02-24 10:13:27
【问题描述】:

我在统一 C# 代码中得到了意外的输出。

string currentScore = "origData";

fb.reference.Database
      .GetReference("scores")
      .Child(userId)
      .GetValueAsync()
      .ContinueWith(task => {
        if(task.IsFaulted){
          Debug.Log("Error");
        }else if(task.IsCompleted){
                        Firebase.Database.DataSnapshot snapshot = task.Result;
          Debug.Log("Inside :"+currentScore);
          currentScore = snapshot.Value.ToString();
          Debug.Log("Inside Updated:"+currentScore);
        }
      });
Debug.Log("Outside: "+currentScore);

Debug.Log("Outside: "+currentScore); 先于fb.reference.Database 执行。所以输出是 Outside: origData, Inside: origData, Inside Updated: firebaseResponse。我期望在Debug.Log("Outside: "+currentScore); 之前执行fb.reference.Database

【问题讨论】:

    标签: c# firebase variables unity3d firebase-realtime-database


    【解决方案1】:

    你正在调用方法:

    fb.reference.Database .GetReference("scores") .Child(userId) .GetValueAsync() 
    

    正如方法调用所述,您调用的是异步方法。所以你的程序会继续执行调用者方法,然后你会得到结果:

    Debug.Log("Outside: "+currentScore);
    

    您可能应该调用同步方法(如果存在),或者将“Debug.Log”行移至“ContinueWith”任务中:

    fb.reference.Database .GetReference("scores") .Child(userId) .GetValueAsync() .ContinueWith(task => { Debug.Log("Outside: "+currentScore); ...
    

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多