我在我的应用程序中使用 angularJS。我有 $interval 的计时器。
当我打开浏览器时,它可以工作,但有时会停止。
我尝试过这些案例:
- 打开标签页并等待 15-20 分钟
- 以非事件状态打开标签页并等待 15-20 分钟
- 锁定窗口并再次等待 15-20 分钟
在这些情况下一切都运行良好,但是当我锁定窗口 4 小时时,我发现计时器在一小时后停止更新。
另外,在某些情况下,当 Windows 未锁定时,计时器会停止,您能帮我解决这个问题吗?
function setTime() {
var now = new Date(timeStamp);
$scope.time = new Date(new Date( now.getTime() + (now.getTimezoneOffset() 60000)).getTime() + ($scope.timezoneOffset 60000));
if (!_intervalId) {
_intervalId = $interval(function () {
var tempTime = new Date().getTime();
timeStamp += (tempTime - currentTime) > 1100 || (tempTime - currentTime) < 900 ? 1000 : tempTime - _currentTime;
_currentTime = tempTime;
var now = new Date(timeStamp);
$scope.time = new Date(new Date( now.getTime() + (now.getTimezoneOffset() 60000)).getTime() + ($scope.timezoneOffset 60000))
}, 1000)
}
}
最佳答案
某些浏览器会停止长时间运行的任务以节省电池。据我所知,它并没有在任何地方得到很好的记录。可以在某些浏览器中配置它,在每个人最喜欢的(叹气)IE 中 - 它在 Windows 电源选项中:
所以这确实发生了,你并没有失去理智。浏览器正在尝试在运行长时间运行任务的网站上节省电池电量。
我建议您检测页面上的事件(例如鼠标移动),如果它确实在一秒钟内更新了您为此目的保留的计数器,则重新启动间隔。很脏,但可能会起作用。
关于javascript - AngularJS $interval 自动停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34222306/