我有一個JS例程(由用戶觸發),可能需要一些時間才能完成。例程正在運行時,我想在屏幕上顯示疊加進度。下面是調用程序(這被稱爲響應click事件)的代碼:JavaScript運行前重繪CSS(顯示進度指示器)
function handleClick() {
$('div#progressOverlay').removeClass('hidden');
myBigRoutine();
...
$('div#progressOverlay').addClass('hidden');
}
類切換觸發opacity
和visibility
的變化(與過渡動畫)。
該類自己改變工作正常;第一個在慢例程之前執行,第二個在其他所有之後執行。
問題是#progressOverlay
的外觀不會改變,直到myBigRoutine()
完成後。
其結果是,在屏幕上的進度覆蓋閃爍一秒鐘,然後立刻再次隱藏(所有沒有動畫)
有沒有辦法迫使視覺更新/重繪之前發生(或者,甚至更好,與此同時)大JavaScript例程?
爲什麼不使用網絡工作者?他們是爲了這樣的東西。 –