$ интервал перестает работать в Angular после 2 повторений

0

Я пытаюсь заставить Angular перезагрузить страницу через 15 секунд, показывая spinner, но по какой-то причине после двух повторений он начнет игнорировать функцию $ interval и начнет перезагружать страницу в момент ее изменения (без ожидания 15 секунд). Есть идеи? Благодарю!

var getAll = function () {
  $http.get('/getAll')

  .success(function (data) {
      // something
  })

  .error(function (data) {
      // something else
  });		
}

getAll();

$interval(function () {
  usSpinnerService.spin('spinner-1');  
		
  $interval(function () {
    getAll();
    usSpinnerService.stop('spinner-1');
  }, 2000);

}, 15000);
  • 0
    логика не имеет большого смысла .... внутренний интервал останавливает вращение каждые 2 секунды, но вращение запускается только каждые 15 секунд. Также каждые 15 секунд будет создаваться новый интервал, который запускается каждые 2 секунды ... будет иметь 4 внутренних интервала, которые запускаются каждые 2 секунды только в первую минуту. Spinner должен быть остановлен в обратном вызове ajax
  • 0
    Зачем вам нужен интервал, который должен повторяться вечно, чтобы сделать что-то один раз? Вы хотите запустить спиннер, задержать его на 15 секунд, затем остановить спиннер и вызвать getAll (), верно?
Теги:

1 ответ

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

Глядя на документацию на $ interval, вам нужно установить "count", количество повторений интервала $. В этом случае, похоже, вы только хотите, чтобы это произошло однажды.

Здесь мы начинаем поворот. Затем интервал начинается с задержки 15 секунд перед вызовом функции some_function() которая остановит счетчик и вызовет getAll()

var some_function() {
   stop_spinner()
   getAll()
}

start_spinner()
$interval(some_function, 15000, 1);

Источник: https://docs.angularjs.org/api/ng/service/ $ interval

  • 0
    Я сделал это минуту назад, и это сработало. Я не останавливал интервал в $. Большое спасибо!

Ещё вопросы

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