检索控制器模型数据的巨大XHR延迟

时间:2014-04-09 09:11:38

标签: jquery ajax json angularjs

我有一个简单的控制器,它调用ajax来检索它的模型(一个包含2d数组的4.5k json)。我使用这个控制器来创建一个显示一系列标签的组合,html是:

<select data-ng-controller="CGSimpleXHRComboController"
        data-ng-init="getData(MY_URL)">
    <option data-ng-value="item[0]"
            data-ng-repeat="item in items"
            data-ng-cloak>
          {$ item[1] $}
    </option>
</select>

这是我的控制者:

angular.module('CGSimpleXHRComboController', []).
    controller('CGSimpleXHRComboController', ['$scope', '$http', 'CGLogger',
        function($scope, $http, CGLogger) {

        "use strict";

        $scope.__successHandler = function(data) {
            CGLogger.debug('Data has been retrieved');
            $scope.items = data.data;
        };

        $scope.__failHandler = function() {
            CGLogger.error(arguments[0]);
        };

        $scope.getData = function(url) {
            CGLogger.debug('Retrieving combo data from "{0}"', url);
            $http.get(url).
                success(function(data) {
                    $scope.__successHandler(data);
                }).
                error(function(msg) {
                    $scope.__failHandler.apply($scope, arguments);
                });
        };
    }]);

代码可以工作,但是用json中的数据填充组合需要几秒钟。 通过分析XHR电话,Chrome表示它有 3.8秒的延迟! 如果我在控制台中运行jQuery.get(MY_URL),响应速度非常快: 40ms 只有延迟!那么......这里发生了什么? (我尝试使用jQuery在控制器中进行调用,但延迟仍然很大......所以问题不在于ajax调用本身)

1 个答案:

答案 0 :(得分:0)

OMG,刚刚意识到问题是什么,它与AngularJS或我的代码实现完全无关!我在我的应用程序中使用 Django ,在本地我安装了 django-toolbar ,这是一款专为提供应用程序跟踪和调试工具而设计的应用程序(它显示查询已执行,已加载的模板)等等......)也许它的js文件会干扰我的,结果是一个糟糕的客户端行为。现在删除该应用程序,延迟只有 10ms !太棒了:))