2013-01-04 62 views
0

我有它運行每隔10秒和應發送AJAX請求一個簡單的JS定時器。問題是在一些Windows XP機器上,這個任務停止運行 - 沒有發送AJAX請求。它似乎成功運行45分鐘,然後停下來一段隨機的時間,然後開始併成功運行另一個45分鐘......我的問題是什麼可能導致這種情況發生?計算機上運行的某些服務/計劃任務是否會停止javascript定時器的工作?什麼可以阻止javascript定時器事件?

Ext.onReady(function(){ 

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

}); 
+1

看着任務管理器似乎沒有透露任何東西 - 在JS計時器停止工作時,CPU /內存使用量不會增加。 – user1578653

+0

45分鐘?檢查運行時是否凍結。長時間運行時,腳本性能會隨着時間的推移而降低,即使它不佔用太多的內存或CPU使用量。 – Joseph

+0

我該如何檢查?這是在任務管理器中嗎? – user1578653

回答

0

夫婦的建議:

  1. 嘗試從Ext.TaskManager切換到正常setInterval。如果解決了這個問題,那麼在任務管理器中可能存在一個錯誤。

  2. 如果不工作,然後嘗試以下方法:使用間隔

    • 保持。記錄間隔的id。同時記錄上次執行的時間。

    • 先從setInterval,以及較大的間隔另一個定時器,說1分鐘。在回調中檢查最後執行時間。

    • 如果是很久以前(> 30秒),請使用您存儲的id調用clearInterval並重新啓動任務間隔。

  3. 如果這不起作用,請嘗試在單獨的中執行這些輪詢任務。如果瀏覽器忙於其他任務,則可以跳過調用Interval和Timeout回調。通過將它們放入單獨的中,您可以給它們一個專用的事件循環,以便其他任務不會干擾它們。

+0

謝謝 - 我現在想要你的第一個解決方案 - 只需要等待45分鐘左右,看它是否停止工作...... – user1578653

+1

第一個建議的工作 - 它必須是在內線任務管理器中的錯誤! – user1578653

+0

很高興聽到!向[Sencha](http://www.sencha.com/)報告錯誤可能是個好主意。 –

相關問題