对MVC控制器的angular js异步调用不是异步

时间:2014-04-03 19:38:15

标签: c# asp.net-mvc angularjs asp.net-mvc-4 asp.net-web-api

我们的设置快速概述: - 用于前端的MVC Web应用程序,它将REST请求发送到MVC Web API。

这一切都很有效,但是,我们现在已经介绍了AngularJS,以允许我们使用与javascript的2路数据绑定。

这是一个非常好的框架,我们已经开始使用ajax $ http请求。

所以, 在angular中,我们使用$ http来调用调用REST WEB API的MVC控制器,返回数据,在控制器中序列化为JSON并发送到angularJS请求以进行2路数据绑定。

我们遇到的这个问题是,我们现在一次发出多个HTTP请求,但是,每个请求似乎都在等待之前的请求已经完成,我们正在努力找出原因? 我们期望所有请求彼此独立,这样就不会有延迟或等待时间......

如果有人可以提供任何建议,我们将不胜感激

ps - 我希望一切都有意义

下面的角度代码: -

    $scope.LoadResults();
    $scope.GetHistory();
    $scope.GetUserDetails();

 $scope.GetHistory = function () {
  $http.post('/user/GetHistory/', $scope.data).success(function (data, status, headers, config) {
});
}

 $scope.GetUserDetails= function () {
 $http.post('/user/GetUserDetails/1234', $scope.data).success(function (data, status, headers, config) {
});
}


$scope.LoadResults = function () {
    $scope.data = {
        frequency: $scope.frequency,
        direction: $scope.direction,
        view: $scope.view
    };
    var userid = $('#id').val();
    var url = '/user/' + userid + '/GetUserResults/';

    $http.post(url, $scope.data).success(function (data, status, headers, config) {
        if (data.msg != '') {
                        $scope.resultssummarydata = data.aaData;

        }
        else {
            $scope.errors.push(data.error);
        }
    });
}

1 个答案:

答案 0 :(得分:3)

请注意,如果Patko想要将此作为答案添加,他应该得到荣誉,因为他是真正想出来的人(我只提供了关闭会议的方法)。 < / p>

尝试将此更改(或添加)到您的web.config以关闭会话:

<sessionState mode="Off" />

ASP.Net中的会话实现非常奇怪。如果多个http请求来自同一个浏览器/用户会话,则会将它们序列化并一次处理一个。除此之外,会话实现效率非常低 - 整个会话被加载到每个请求的内存中。

多年来对ASP.Net Session的实施提出了相当广泛的批评 - 有一点谷歌搜索将允许你阅读它。