问题描述
|
我想要JsonResult中的东西,它们在从浏览器[客户端]得到请求后做出响应,并在完成任务之前迅速做出响应。
意味着请求在任务完成之前先做出响应,然后运行一个线程来完成任务。
任何人都可以向我展示在asp.net MVC中执行此操作的代码
解决方法
AJAX是否足以满足您的需求?
$.getJSON(\'@Url.Action(\"Foo\")\',function(result) {
// once the task completes this callback will be executed
});
// flow continues to execute normally
在服务器端:
public ActionResult Foo()
{
// TODO: some task
return Json(someResult,JsonRequestBehavior.AllowGet);
}
如果此任务是I / O密集型的,则可以利用异步控制器和I / O完成端口。
如果您遇到了“一劳永逸”的情况,则可以简单地启动任务并立即从控制器中返回:
public ActionResult StartTask()
{
// Fire the task
Task.Factory.StartNew(() =>
{
// TODO: the task goes here
// Remark: Ensure you handle exceptions
});
// return immediately
return Json(
new { Message = \"Task started\" },JsonRequestBehavior.AllowGet
);
}