AngularJS轮询性能问题

时间:2015-08-04 18:33:39

标签: javascript jquery angularjs performance

我正在开发一款在前端使用Angularjs的新应用。该应用程序的想法是每5秒轮询/同步服务器数据。这是在使用$ interval和ajax调用的服务中完成的:

function beginSync() {
        if (!angular.isDefined(syncInterval)) {
            syncInterval = $interval(syncDetails, 5000);
        }
    }

    function endSync() {
        if (angular.isDefined(syncInterval)) {
            $interval.cancel(syncInterval);
            syncInterval = undefined;
        }
    }

    function syncDetails() {
        return $http({
            url: _contextPath + "/pathToAPI" + Id,
            method: "GET",
            headers: { "Content-Type": "application/json", "RequestName": "Details Sync" }
        })
            .then(syncSuccess, syncFailure);
    }

同步的结果将重新填充数组对象,这反过来将更新嵌套的ng-repeat。

function syncSuccess(response) {
        drives = angular.copy(response.data.drives);
        return response.data;
    }

在控制器中我正在观看$ destroy以删除页面休假等间隔。

$scope.$on("$destroy", function() {
        SyncService.endSync();
    });

问题是,在几分钟之后,页面变得缓慢并最终没有响应。我已经尝试使用chrome工具调试这个,但是在破译它告诉我的内容时并不是那么好。这是我拍摄的堆快照的链接(1表示没有轮询,2表示轮询一分钟。)和时间轴视图。 Heap Snapshots

在我看来,当删除这些元素时,事件监听器不会在dom中的某处被破坏。我们没有使用任何其他jquery插件或任何东西,所以我不知道为什么会是这种情况。对此的任何帮助将不胜感激。

0 个答案:

没有答案