G--*_*G-- 1 c# asp.net-mvc jquery async-await
我有一个jquery Ajax函数
var arr = {
id: 1,
run: true
}
$.ajax({
url: '@Url.Action("Getdata", "Details")',
data: { Batch: arr},
type: "POST",
success: function (result) {
if (result) {
GenNamespace.Completed(result);
}
},
error: function (result) { alert("Problem Occured"); },
});
Run Code Online (Sandbox Code Playgroud)
它调用了c#async函数,并且在成功完成任务后,我在jquery ajax成功执行了一些函数
public async Task<JsonResult> GetData(Batch arr)
{
try
{
var success = false;
var t = await Task.Run(() =>
{
//i am Performing long running task here
return Json(success, JsonRequestBehavior.AllowGet);
}
});
return t;
}
catch (Exception ex)
{
throw ex;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是这是一个异步函数,所以即使函数没有完全执行,值(success = false)也会返回到jquery成功,所以如何在完成此任务后调用javascript函数,是否有任务完成通知或我可以在这种情况下使用的东西?
下一个代码就像预期的那样工作(它几乎与你的相同):
[HttpPost]
public async Task<JsonResult> GetData()
{
var succ = false;
var taskRes = await Task.Run(async () =>
{
await Task.Delay(10000);
succ = true;
return Json(succ, JsonRequestBehavior.AllowGet);
});
return taskRes;
}
$.ajax({
url: '@Url.Action("GetData", "Home")',
type: "POST",
success: function (result) {
console.log(result);
},
error: function (result) { alert("Problem Occured"); },
});
Run Code Online (Sandbox Code Playgroud)
执行(10s)后,控制台中的'true'.
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |