我有一个简单的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);
});
答案 0 :(得分:0)
一些建议:
尝试从Ext.TaskManager
切换为正常setInterval
。如果这样可以解决问题,那么任务管理器中可能存在错误。
如果不起作用,请尝试以下操作:
继续使用间隔。记录间隔的id
。同时记录上次执行的时间。
以setInterval
和更长的间隔启动另一个计时器,例如1分钟。在回调内部检查上次执行时间。
如果很久以前(> 30秒),请使用您存储的clearInterval
拨打id
并重新启动任务间隔。
如果不起作用,请尝试在单独的<iframe>
中执行这些轮询任务。如果浏览器忙于其他任务,则可以跳过调用Interval和Timeout回调。通过将它们放入单独的<iframe>
,您可以为它们提供专用的事件循环,以便其他任务不会干扰它们。