javascript - AngularJS $interval 自动停止

标签 javascript angularjs intervals

我在我的应用程序中使用 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 电源选项中:

enter image description here

所以这确实发生了,你并没有失去理智。浏览器正在尝试在运行长时间运行任务的网站上节省电池电量。

我建议您检测页面上的事件(例如鼠标移动),如果它确实在一秒钟内更新了您为此目的保留的计数器,则重新启动间隔。很脏,但可能会起作用。

关于javascript - AngularJS $interval 自动停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34222306/

相关文章:

PHP:如何确定变量的值是否介于两个不同的常量值之间?

r - 合并线性区间

javascript - 如何从 xml 中提取特定内容(在页面加载时)?

Javascript == 运算符无法按预期工作?

javascript - Kendo UI ,自动完成最大容量为 1000。我想增加这个

angularjs 和 highcharts/highchartsNG - renderTo 不起作用

asp.net - 在 aspx 文件中转义撇号

javascript - 为什么需要 ("angular") 返回一个空对象

javascript - Angular.js 和 Node.js - 通过 Controller 将输入变量传递到 server.js

iphone - Cocos2D 默认的调度间隔是多少?