0

我有一个简单的 JS 计时器,它每 10 秒运行一次,应该发送一个 AJAX 请求。问题是在某些 Windows XP 机器上这个任务停止运行 - 没有 AJAX 请求被发送。它似乎成功运行了 45 分钟,然后随机停止了一段时间,然后启动并成功运行了 45 分钟......我的问题是什么可能导致这种情况发生?PC 上运行的某些服务/计划任务会阻止 JavaScript 计时器工作吗?

Ext.onReady(function(){

    var task = {
        run: function(){
            Ext.Ajax.request({
                url: 'test.php'
            });
        },
        interval: 10000
    };
    Ext.TaskManager.start(task);    

});
4

1 回答 1

0

几个建议:

  1. 尝试从Ext.TaskManager正常切换setInterval。如果这样可以解决问题,则任务管理器中可能存在错误。

  2. 如果它不起作用,请尝试以下操作:

    • 继续使用间隔。记录id时间间隔。还要记录上次执行的时间。

    • setInterval以更大的间隔启动另一个计时器,例如 1 分钟。在回调内部检查最后一次执行时间。

    • 如果是很久以前(> 30 秒),请clearInterval使用id您存储的调用并重新启动任务间隔。

  3. 如果这不起作用,请尝试在单独的<iframe>. 如果浏览器忙于其他任务,它可以跳过调用 Interval 和 Timeout 回调。通过将它们放在一个单独的位置<iframe>,您可以为它们提供一个专用的事件循环,这样其他任务就不会干扰它们。

于 2013-01-04T12:39:48.957 回答