角度$ timeout持续时间是否有限制?

时间:2016-06-09 19:40:12

标签: javascript angularjs timeout

我正在调用两个$ timeout函数,一个延迟为1000,另一个延迟为3000000000.延迟时间总是立即触发。这是函数的限制,还是我的错误?

为了让事情变得更加奇怪,100000000000并不一定会导致3000000000的错误

angular.module('app', [])

.controller('FrameController', ['$injector', '$timeout',
  function($injector, $timeout) {
    var liveTimers = [];

    function setExpiryTime(timer, timeRemaining) {
      if (liveTimers[timer]) {
        cancel(liveTimers[timer]);
        delete liveTimers[timer];
      }
      liveTimers[timer] = $timeout(function() {
        alert(timer + " timer expired")
        console.log(timer + " expired");
        delete liveTimers[timer];
      }, timeRemaining);

    }

    setExpiryTime('first', 1000);
    setExpiryTime('second', 100000000000);
    setExpiryTime('third', 30000000000);

  }
]);

setTimeout(function() {
  angular.bootstrap(document.getElementById('body'), ['app']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div id="body">
  <div ng-controller="FrameController">

  </div>
</div>

1 个答案:

答案 0 :(得分:0)

我的猜测是30000000000超出了内存。 Here是您的代码的掠夺者,我可以接近

setExpiryTime('third', 19300000000);

没有第三个计时器到期。

大概是2 ^ 34。