使用 ASP .Net MVC 5 和 AngularJS 对服务器的异步调用

Asynchronous calls to server using ASP .Net MVC 5 and AngularJS

我在 angularjs 中有一个 HTTP post 调用,大约需要 7-8 秒才能完成任务。 url 是 MVC 中一个控制器的动作方法。因为它花费了很多时间,所以我不希望我的用户等待这个操作,但可以导航到任何其他页面,甚至可以继续在同一页面上进行不同的操作。一旦操作完成,它将通知用户成功或 failure.Currently 任何其他 http post 等待此 post 完成,然后显示其各自的结果。我需要帮助了解如何针对这种情况进行操作。什么是最好的方法?我在 link 下面检查了这个,我看到了一些建议。会有帮助吗? link- http://tech.pro/tutorial/1252/asynchronous-controllers-in-asp-net-mvc

AngularJS代码-

$http({
     url: key_Url_Generate,
     method: Post,
     params: $scope.PlanDetails
            }).then(function (result) {
                     //Notify user for success or failure
                                      } 

控制器动作方法-

[HttpPost]
public ActionResult GenerateLtdQuote(LTD_PlanDetailsVM ltdPlanDetailsVM)
{
// time consuming operation here
}

不,异步,至少就 C# 而言,仅允许线程在处于等待状态时 returned 到池中,即等待外部服务之类的响应。它不会使操作 return 更快。事实上,if anything async 会使事情变得更慢,因为它增加了开销。如果你的 AJAX 命中的端点做了任何让线程处于等待状态的事情,它除了等待一些外部进程完成之外什么都不做,那么你应该在它上面使用异步,但只是因为它允许服务器,以更有效地利用资源。不过,它不会让任何事情发生得更快。

异步,就 JavaScript 而言,有点不同,因为 JavaScript 进程 继续。这就是为什么您有 AJAX 请求的回调。当远程访问的任何资源最终响应时,回调将被调用,但其他事情仍可能同时发生。但是,这实际上使您的问题 more 令人困惑,因为通过使用 AJAX,您的页面应该 not 完全被阻止并且用户应该仍然能够与页面交互并做任何他们想做的事情。唯一不会发生这种情况的方法是 运行 AJAX 同步,这实际上有点难以偶然做到,绝对应该避免。