Я использую angularjs и, в частности, $ timeout service (обертка на 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, callback будет вызван через 2 секунды позже.
Похоже, что $ timeout имеет максимальное значение где-то между 3000000000 и 2000000000, и вместо того, чтобы никогда не вызывать обратный вызов, он немедленно вызывается (для хрома как минимум). Кто-нибудь сталкивался с этим раньше? и как вы это решительно разрешили без кучи жесткого кодирования, если < 2000000000 проверяет, когда используются таймауты?
Заранее спасибо, и любая информация была бы принята с благодарностью!
Я просто пошел вперед и добавил, если ($ scope.millisecondsLater <2147483647) {{// выполнить таймаут} К сожалению, это игнорирует большие таймауты. Но с 2147483 секунд это похоже на 25-й день, я в порядке с ним ... спасибо за ответ! и решение разбить ответ на куски и создать рекурсивные таймауты было бы большой оболочкой, которую я буду реализовывать в какой-то момент. – Aaron