Избегайте утечки памяти с помощью углового интервала $, используемого при обратном отсчете

0

Я делаю контроллер, который обрабатывает обратный отсчет, например:

var addzero;

addzero = function(number) {
  if (number < 10) {
    return '0' + number;
  }
  return number;
};

angular.module('theapp').controller('TematicCountdownController', [
  '$scope', '$timeout', function($scope, $timeout) {
    var intervalPromise;
    return intervalPromise = $timeout((function() {

      var days, daysRound, deadline, hours, hoursRound, minutes, minutesRound, now, seconds, secondsRound;

      now = new Date;
      deadline = new Date('oct 5 2015 00:00:00');

      days = (deadline - now) / 1000 / 60 / 60 / 24;
      daysRound = Math.floor(days);
      $scope.dd = daysRound;

      hours = (deadline - now) / 1000 / 60 / 60 - (24 * daysRound);
      hoursRound = Math.floor(hours);
      $scope.hh = addzero(hoursRound);

      minutes = (deadline - now) / 1000 / 60 - (24 * 60 * daysRound) - (60 * hoursRound);
      minutesRound = Math.floor(minutes);
      $scope.mm = addzero(minutesRound);

      seconds = (deadline - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
      secondsRound = Math.round(seconds);
      $scope.ss = addzero(secondsRound);

    }), 1000);
  }
]);

Менеджер задач говорит мне, что процесс моего углового приложения все больше потребляет больше памяти, и процессор постоянно используется.

Перед реализацией этого обратного отсчета использование памяти и процессор были нормальными.

Надеюсь, вы можете помочь мне предотвратить это поведение.

благодаря

  • 0
    действительно нужен счетчик секунд (или даже одиночные минуты), когда крайний срок не наступит?
  • 0
    @charlietfl это то, что клиент просил: /
Теги:
memory-leaks

1 ответ

1
Лучший ответ

Как насчет cancel этого $interval всякий раз, когда происходит $destroy?

$scope.$on('$destroy', function() {
  $interval.cancel(intervalPromise);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню