2012-06-07 63 views
2

我瘋了,試圖讓一個微調出現。我結合我沉重的處理功能,從而按鈕:在jQuery Mobile 1.1中進行大量處理之前顯示加載微調器?

$(document).delegate("#clearread", "tap", onClearRead); 

所以自來水調用此:

var onClearRead = function() { 

setTimeout($.mobile.showPageLoadingMsg, 5); 

// Civilised cleaning of saved status 
var jStorIndex = $.jStorage.index(); 
for (var i = 0; i < jStorIndex.length; i++) { 
    if(jStorIndex[i] != "version") { 
     $.jStorage.deleteKey(jStorIndex[i]); 
    } 
} 

// Load articles afresh 
loadArticles(); 

$.mobile.changePage("#choosearticle"); 

} //onClearRead 

我發現的清/加載過程中的微調不會出現文章(大約10秒),但僅在#choosearticle頁面加載(0.5秒)的短時間內。 我在做什麼錯?

我有微調工作在應用程序的其他地方。

感謝

+0

@Nirmal帕特爾只是固定我的問題,但任何人都知道_WHY_需要瘋狂隨機的setTimeout?我讀過它是關於CPU爭用的問題,任何人都可以更詳細地解釋? – Alveoli

+1

問題是JS在瀏覽器中的單個線程中運行。所以如果你投入大量的處理,在JS完成之前,瀏覽器不會嘗試重新繪製/重繪內容。當JS完成時,我們調用了一個changePage()... setTimeout只是讓瀏覽器有足夠的喘息時間來完成其他任務,然後再回到JS中繁重的工作。 –

+0

終於有些清晰了 - 謝謝! – Alveoli

回答

3

試試這個:

$(document).delegate("#clearread", "tap", onClearRead); 

var onClearRead = function() { 
$.mobile.showPageLoadingMsg(); 
setTimeout(function(){ 
     //Your heavy processing 
     $.mobile.changePage("#choosearticle"); 
    }, 5); 
} //onClearRead 
+1

**是的,它的工作原理 - 謝謝!**我發現,如果設備速度很慢,您可能需要增加毫秒(比如說100)。否則,微調框仍然不會出現。 – Alveoli

相關問題