【发布时间】:2020-07-30 00:48:06
【问题描述】:
我希望在使用回调的协程方法中完成任务后返回值。但是,我得到了奇怪的执行。
以下是代码:
public string GetTable()
{
string valueToReturn = "defaultValue";
StartCoroutine(getTable(returnedValue =>
{
valueToReturn = returnedValue;
Debug.Log("Value got back from callback");
}));
Debug.Log("Returning Value " + valueToReturn);
return valueToReturn;
}
IEnumerator getTable(Action<string> callBack)
{
var data = new Dictionary<string,object>();
{
data["userId"] = "nkjgfnmoaisd";
}
string tableId = null;
var function = _functions.GetHttpsCallable(("matchRequest"));
var task = function.CallAsync(data).ContinueWithOnMainThread((callTask) =>
{
if (callTask.IsFaulted)
{
Debug.LogError("An error...");
return;
}
var result = (IDictionary) callTask.Result.Data;
tableId = (string) result["tableId"];
Debug.Log("I am being called after done :)");
Debug.Log(tableId);
callBack(tableId);
});
yield return new WaitUntil( () => task.IsCompleted);
}
预期输出:
- 完成后有人打电话给我 :)
- FNIIUSHDF(表 ID)
- 从回调中取回的值
- 返回值 FNIIUSHDF
电流输出:
- 返回值 defaultValue
- 完成后有人打电话给我 :)
- FNIIUSHDF
- 从回调中取回的值
【问题讨论】:
标签: c# firebase unity3d asynchronous task