我正在调用两个$ timeout函数,一个延迟为1000,另一个延迟为3000000000.延迟时间总是立即触发。这是函数的限制,还是我的错误?
为了让事情变得更加奇怪,100000000000并不一定会导致3000000000的错误
angular.module('app', [])
.controller('FrameController', ['$injector', '$timeout',
function($injector, $timeout) {
var liveTimers = [];
function setExpiryTime(timer, timeRemaining) {
if (liveTimers[timer]) {
cancel(liveTimers[timer]);
delete liveTimers[timer];
}
liveTimers[timer] = $timeout(function() {
alert(timer + " timer expired")
console.log(timer + " expired");
delete liveTimers[timer];
}, timeRemaining);
}
setExpiryTime('first', 1000);
setExpiryTime('second', 100000000000);
setExpiryTime('third', 30000000000);
}
]);
setTimeout(function() {
angular.bootstrap(document.getElementById('body'), ['app']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div id="body">
<div ng-controller="FrameController">
</div>
</div>
答案 0 :(得分:0)
我的猜测是30000000000超出了内存。 Here是您的代码的掠夺者,我可以接近
setExpiryTime('third', 19300000000);
没有第三个计时器到期。
大概是2 ^ 34。