angularjs $timeout max value



我正在使用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.毫秒稍后 = 2000,则回调会在 2 秒后调用。

似乎$timeout的最大值介于 30000000000 和 2000000000 之间,而不是从不调用回调,它会立即被调用(至少对于 chrome)。 以前有人遇到过这种情况吗?您如何在没有一堆硬编码的情况下干净地解决它,如果每当使用超时时<2000000000 次检查?

提前感谢,任何见解将不胜感激!

我不认为这个问题是 Angular 的$timeout服务所特有的,而是存在于普通 JavaScript 中的setTimeout函数(因为无论如何$timeout有效地包装setTimeout)。

setTimeout可以取的最大值是 32 位整数(即 2147483647)。任何超出范围的事情显然都会导致意想不到的行为。也许将您的延迟分解成更小的块?

相关内容

  • 没有找到相关文章

最新更新