我们如何从c#中的async Action方法中获取值
本文关键字:方法 Action 获取 async 中的 我们 | 更新日期: 2023-09-27 17:59:32
我有一个类似的async
方法
[HttpPost]
public async Task<JsonResult> AddTwoIntegers(int param1, int param2)
{
var result = await (param1 + param2);
return Json(new {finalValue: result}, JsonRequestBehavior.AllowGet)
}
现在在另一个Action Method
中,我调用这个函数
public ActionResult SomeFunction(string userSettingsViewModel)
{
Task<JsonResult> jsonData = this.AddTwoIntegers(5,10);
jsonData.ContinueWith(task =>
{
JsonResult result = task.Result;
if (result.Data.ToString() == "") {
var data = result.Data;
}
});
// I want to retrieve the value returned and use that value in some operation.
return Json("Success", JsonRequestBehavior.AllowGet);
}
如何从Action Result
中获取返回值。
您需要更改方法以返回Task<ActionResult>
并将其标记为async
,然后等待AddTwoIntegers()
的结果。。。
public async Task<ActionResult> SomeFunction(string userSettingsViewModel)
{
JsonResult result = await this.AddTwoIntegers(5, 10);
var jsonData = result.data;
// ...
return Json("Success", JsonRequestBehavior.AllowGet);
}
为了完整性,示例方法应该是这样的。。。
[HttpPost]
public Task<JsonResult> AddTwoIntegers(int param1, int param2)
{
var result = param1 + param2;
return Task.FromResult(Json(new {finalValue: result},
JsonRequestBehavior.AllowGet));
}
应该是这样的:
JsonResult = await AddTwoIntegers(5,10);
查看MSDN示例
然后您需要声明在操作之外存储结果的变量。然后使用变量。
任务jsonData=this。AddTwoIntegers(5,10);
Type data = null; //Note that I put Type because I don't know your type for result.Data
jsonData.ContinueWith(task =>
{
JsonResult result = task.Result;
if (result.Data.ToString() == "") {
data = result.Data;
}
});
// I want to retrieve the value returned and use that value in some operation.
//Now you can use your variable data here!!
return Json("Success", JsonRequestBehavior.AllowGet);
}