我有一個轉換的網頁,在點擊一切都將opacity:0
(持續1秒),然後一個新的頁面被換入,一切都將opacity:1
(持續1秒)有沒有辦法在確切時間履行承諾?
它最終看起來怪異,如果頁面沒有精確的1秒鐘來隱藏並顯示。此外,如果該頁面沒有在兩者之間立即交換,它看起來很有價值。
這是我的第一個代碼
$('#main').css('opacity', '0');
setTimeout(function(){
$('#main').load('/views/'+name+'.html').css('opacity', '1')
}, 1000);
但是負載()有時需要太長搶視圖,並且由於CSS是立即執行的透明度已經1
當它交換。
所以我想這:
$.get('/views/'+name+'.html', function(page){
setTimout(function(){
$('#main').html(page).css('opacity', '1')
},1000);
})
但現在如果$獲得()是緩慢的,頁面是空白時間過長。 理想情況下,我想知道承諾花了多長時間完成,並從setTimeout時間中減去。 我現在在想,我必須手動創建一個新的日期對象,並檢查承諾履行後的差異。
有沒有更好的解決方案?
這不是OP所要求的,'async:false'通常不好。 – Ozan
通常我不會做異步錯誤,但在他的情況下它是有道理的,並且比依賴基於時間的東西更一致。這不像他阻止任何點擊的東西,因爲他正在替換整個頁面的內容。 –
他不希望動畫在ajax之後運行,他已經可以輕鬆地做到這一點。這對任何情況都沒有幫助。 – Ozan