angularjs $ timeout最大值

时间:2014-02-21 00:44:30

标签: angularjs timeout settimeout angularjs-service

我使用angularjs,尤其是$ timeout服务(setTimeout上的包装器)。它的工作原理如下:

 angular.module('MyApp').controller('MyController', ['$scope', '$timeout',
     function($scope, $timeout) {

        $scope.millisecondsLater = 3000000000;
        $timeout(function(){
           console.log('it\'s been ' + $scope.millisecondsLater + ' later');
        }, $scope.millisecondsLater);

    }
 ]);

当实例化该控制器时,立即调用超时中的函数。但如果我设置:

  $scope.millisecondsLater = 2000000000; 
似乎没有像预期的那样被调用,因为这是(从现在起2000000秒)。如果我设置$ scope.millisecondsLater = 2000,那么回调会在2秒之后被调用。

似乎$ timeout的最大值介于3000000000和2000000000之间,而不是永远不会调用它立即被调用的回调(至少对于chrome)。有没有人遇到过这个?你怎么干净地解决它没有一堆硬编码如果<每次超时都会进行2000000000次检查?

提前致谢,我们将非常感谢任何见解!

1 个答案:

答案 0 :(得分:5)

我不认为此问题特别适用于Angular的$timeout服务,但普通JavaScript中存在的setTimeout函数(因为$timeout无论如何都有效地包裹setTimeout )。

最大值setTimeout可以采用32位整数(即2147483647)。超出范围显然会导致意外行为。或许可以将你的延迟分解成更小的块?