什么可以阻止javascript计时器事件?

时间:2013-01-04 12:07:07

标签: javascript extjs

我有一个简单的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);    

});

1 个答案:

答案 0 :(得分:0)

一些建议:

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

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

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

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

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

  3. 如果不起作用,请尝试在单独的<iframe>中执行这些轮询任务。如果浏览器忙于其他任务,则可以跳过调用Interval和Timeout回调。通过将它们放入单独的<iframe>,您可以为它们提供专用的事件循环,以便其他任务不会干扰它们。