2015-12-03 65 views
3

我有一個「加載」覆蓋圖,當我進行ajax調用時顯示。這工作正常。 疊加在CSS定義爲:爲Ajax調用顯示覆蓋層,但不調用時沒有Ajax調用

.loading{ 
    position:fixed; 
    z-index:1010; 
    top:0; 
    left:0; 
    height:100%; 
    width:100%; 
    background: rgba(255, 255, 255, .9) 
       url('http://url to image') 
       50% 50% 
       no-repeat;    
} 

,它被稱爲在一個js功能

function showLoading() 
{ 
    $("#layer").addClass("loading"); 
} 

一旦AJAX調用返回我所說的hideLoading(),其隱藏層。所有這些工作正常。

現在我點擊了一個按鈕,進行客戶端流程密集計算,最後我在DOM中加載額外的內容。這個功能是說calcDataPoints()。我需要它,當有人點擊calc按鈕時,我會顯示覆蓋圖,進行計算並更新DOM,然後隱藏覆蓋圖。

所以我做的:

showLoading(); 
calcDataPoints(); 
hideLoading(); 

的問題是覆蓋永遠不會被渲染。當calc已經「完成」而不是「之前」時,它顯示微秒。所以它沒有預期的效果。

我在這裏做錯了什麼?如何在calc開始之前顯示覆蓋圖,並在calc結束後關閉它,並且已將數據寫入DOM?

任何指針非常感謝!

+0

建議看[This](http://stackoverflow.com/questions/5187968/how-should-i-call-3-functions-in-order-to-execute-them-one-after-the-其他)的答案。 –

+0

你可以發佈你正在運行的完整代碼嗎? – adriancarriger

回答

1

電話這樣的:

setTimeout(showLoading, 10); 
setTimeout(calcDataPoints, 2000); 
setTimeout(hideLoading, 2000); 

這樣,我們可以調用像異步。