C# 使用ASP.NETMVC5和AngularJS对服务器的异步调用

C# 使用ASP.NETMVC5和AngularJS对服务器的异步调用,c#,angularjs,asynchronous,asp.net-mvc-5,C#,Angularjs,Asynchronous,Asp.net Mvc 5,我在angularjs中有一个HTTP post调用,完成任务大约需要7-8秒。url是MVC中一个控制器的操作方法。由于这需要很多时间,我不希望我的用户等待此操作,但可以导航到任何其他页面,甚至可以在同一页面上继续执行不同的操作。一旦操作完成,它将通知用户成功或失败。目前,任何其他http post都会等待此post完成,然后再显示相应的结果。我需要帮助,看看能为这个场景做些什么。最好的方法是什么?我查看了下面的链接,看到了一些建议。会有帮助吗?链接- AngularJS代码- $http({

我在angularjs中有一个HTTP post调用,完成任务大约需要7-8秒。url是MVC中一个控制器的操作方法。由于这需要很多时间,我不希望我的用户等待此操作,但可以导航到任何其他页面,甚至可以在同一页面上继续执行不同的操作。一旦操作完成,它将通知用户成功或失败。目前,任何其他http post都会等待此post完成,然后再显示相应的结果。我需要帮助,看看能为这个场景做些什么。最好的方法是什么?我查看了下面的链接,看到了一些建议。会有帮助吗?链接-

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#方面,只允许线程在处于等待状态时返回池,即等待外部服务之类的响应。它不会使动作更快地返回。事实上,如果有任何东西是异步的,那么它会使事情变得更慢,因为它会增加开销。如果被AJAX命中的端点做了任何事情,使线程处于等待状态,在等待外部进程完成时什么也不做,那么您应该在其上使用异步,但这只是因为它允许服务器更有效地使用资源。不过,这不会让任何事情更快发生


异步,就JavaScript而言,有点不同,因为JavaScript过程将继续。这就是为什么要对AJAX请求进行回调。当远程访问的任何资源最终响应时,将调用回调,但在此期间仍可能发生其他事情。但是,这实际上会使您的问题更加混乱,因为通过使用AJAX,您的页面根本不应该被阻止,用户应该仍然能够与页面交互,并做任何他们想做的事情。唯一不会发生这种情况的方法是,如果您同步运行AJAX,这实际上有点意外,很难做到,应该避免。

嗨,Chris,我的AJAX调用是同步运行的吗。我使用的是我在问题中编写的相同angularjs代码。