我正在使用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检查,您如何在没有大量硬编码的情况下干净地解决它?
在此先感谢您,任何见解将不胜感激!
我认为这个问题不是特定于$timeout
Angular的服务,而是setTimeout
普通JavaScript中存在的函数(无论如何都$timeout
有效地包装setTimeout
了)。
最大值setTimeout
可以是32位整数(即2147483647)。超出范围的任何事情显然都会导致意外行为。也许将您的延误分成较小的部分?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句