【问题标题】:Asynchronous calls to server using ASP .Net MVC 5 and AngularJS使用 ASP .Net MVC 5 和 AngularJS 对服务器进行异步调用
【发布时间】:2015-02-18 17:00:50
【问题描述】:

我在 angularjs 中有一个 HTTP 发布调用,大约需要 7-8 秒才能完成任务。 url 是 MVC 中一个控制器的操作方法。由于这需要很多时间,我不希望我的用户等待此操作,但可以导航到任何其他页面,甚至可以在同一页面上继续执行不同的操作。操作完成后,它将通知用户成功或失败。当前任何其他 http 帖子都会等待该帖子完成,然后再显示其各自的结果。我需要帮助来解决这种情况。最好的方法是什么?我检查了下面的链接,我看到了一些建议。会有帮助吗?链接-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# angularjs asynchronous asp.net-mvc-5


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,克里斯,我的 AJAX 调用是否同步运行。我正在使用我在问题中编写的相同 angularjs 代码。
    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多