Мои интервалы не прекращаются сразу после clearInterval - PullRequest
0 голосов
/ 26 февраля 2019

Я установил повторяющийся интервал для проверки обновлений API с помощью setInterval в JavaScript.Я включил максимальное количество итераций, чтобы предотвратить бесконечный цикл.Однако при достижении максимума интервал будет повторяться случайное количество дополнительных раз.Кажется, что если я установлю номер интервала ниже, число «превышений» возрастет.

Я что-то здесь не так делаю или это «известное» поведение?

RpcService.request('ping.set').then(function(res) {
  function myFunction() {
    var i = 0;
    var x = setInterval(function () {
      RpcService.request('ping.get').then(function(res) {
        $scope.ping = res.output;
        if (res.done === true || i >= 20) { // temporarily implemented to prevent an infinite loop
          clearInterval(x);
          setTimeout(function() {
            console.log('timeOut ready')
          }, 500);
          $scope.buttonVisibility = [0,1,1];
          $scope.buttonDisabled = [0,0,0];
        }
        i++;
        });
    }, 200);
  }
  myFunction();
});
...