Я использую 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, и вместо того, чтобы никогда не вызывать обратный вызов, он вызывается немедленно (по крайней мере, для хрома). Кто-нибудь сталкивался с этим раньше? и как вы чисто разрешили это без кучи жестко запрограммированных if ‹ 2000000000 проверок всякий раз, когда используются тайм-ауты?
Заранее спасибо и будем признательны за любое понимание!