angularjs $timeout最大值

前端之家收集整理的这篇文章主要介绍了angularjs $timeout最大值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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次检查? 在此先感谢,任何见解将不胜感激!

解决方法

我认为这个问题不是特定于Angular的$timeout服务,而是普通JavaScript中存在的setTimeout函数(因为$timeout实际上有效地包装了setTimeout).

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

猜你在找的Angularjs相关文章