У меня есть утечка памяти при выполнении интервала. Я испробовал разные подходы, чтобы исправить это, но я не могу понять, в чем проблема.
мой код:
updated--
$scope.autoUpdatePageResult = function(group){
$scope.isAutoUpdate = !$scope.isAutoUpdate;
storageService.setLocalItem($scope.user + '-auto-update-results', $scope.isAutoUpdate);
if($scope.isAutoUpdate){
$scope.startInterval(group);
}
else {
$scope.stopInterval(group);
}
};
--updated
$scope.startInterval = function(group){
$scope.updateInterval = $interval(function() {
$scope.shouldReloadPage = false;
$scope.loading = true;
$scope.update = true;
$scope.allSessions = [];
for (var a in $scope.sessions){
$scope.allSessions[a] = $scope.sessions[a].started;
}
delete $scope.sessions;
$scope.sessionGroup = group.name;
$scope.getSessions();
}, 3*1000);
// 3 sec
};
$scope.$on('$destroy', function() {
storageService.setLocalItem($scope.user + '-auto-update-results', false);
});
$scope.stopInterval = function() {
$scope.loading = false;
$scope.shouldReloadPage = true;
if (angular.isDefined($scope.updateInterval)) {
$interval.cancel($scope.updateInterval);
$scope.updateInterval = undefined;
}
};
это как график выглядит в когда UpdateInterval запускается и регистрируется (30 сек):
UPDATE (не работает):
$scope.startInterval = function(group){
$scope.totalIntervals = [];
$scope.updateInterval = $interval(function() {
if($scope.totalIntervals.length > 1){
$interval.cancel($scope.totalIntervals[1]);
}
$scope.shouldReloadPage = false;
$scope.loading = true;
$scope.update = true;
$scope.allSessions = [];
for (var a in $scope.sessions){
$scope.allSessions[a] = $scope.sessions[a].started;
}
delete $scope.sessions;
$scope.sessionGroup = group.name;
$scope.getSessions();
$scope.totalIntervals.push($scope.updateInterval);
}, 3*1000);
};`
Где вызывается 'stopInterval'? Не отображается в вашем коде; возможно, добавьте призыв к уничтожению. – st2rseeker
Вы можете сделать снимки кучи/кучи кучи и посмотреть, что выделяется все больше и больше. – zerkms
'stopInterval' на уничтожении не работает. Я пробовал снимки кучи и выделения кучи, но я не совсем понимаю, что делать с данными, которые я получаю. –