异步控制器方法&Ajax
本文关键字:Ajax 方法 控制器 异步控制 异步 | 更新日期: 2023-09-27 17:50:19
我在控制器中有这样的方法:
[HttpPost]
public async Task<string> GetMenu(int? Current) {
await Task.Run(() => System.Threading.Thread.Sleep(60000));
return "";
}
我用JQuery Ajax请求开始,像这样
$.ajax({
type: "POST",
url: '@Url.Action("GetMenu","Products")',
data: "{}",
async: true,
success: function (data) {
$('#menu-container').html(data);
},
});
和浏览器冻结时间的GetMenu操作正在处理。我怎样才能使它在后台以非阻塞的方式工作?
如何在后台以非阻塞的方式工作?
正如我在博客上解释的那样,async
不会改变HTTP协议。根据你实际想做的事情,你可以尝试SignalR或使用分布式架构,具有可靠的队列和独立的后台进程,正如我在另一篇文章中提到的。
我想你需要这样的东西
html<pre id="testpre">
not end
</pre>
JS
$.post("/Home/ProtocolAjaxHandler", { }, function (data) {
$("#testpre").html("END");
});
控制器[HttpPost]
public ActionResult ProtocolAjaxHandler(object _param)
{
System.Threading.Thread.Sleep(15000);
return Json(null);
}