如何使异步结果在ASP.asp.net MVC 3

本文关键字:asp net MVC ASP 何使 异步 结果 | 更新日期: 2023-09-27 17:50:00

我希望在JsonResult中有一个东西,它们在从浏览器[客户端]获得请求后响应,并在完成任务之前快速响应它们。

表示请求在任务完成之前响应,并运行线程来完成任务。

谁能告诉我在asp.net MVC中这样做的代码

如何使异步结果在ASP.asp.net MVC 3

对于您的场景来说,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
    );
}