我有一个 JS 例程(由用户触发),可能需要一些时间才能完成。例程运行时,我想在屏幕上显示进度叠加。这是调用例程的代码(这是响应点击事件而调用的):
function handleClick() {
$('div#progressOverlay').removeClass('hidden');
myBigRoutine();
...
$('div#progressOverlay').addClass('hidden');
}
类切换触发opacity
和visibility
(带有过渡动画)的变化。
班级变更本身运行良好;第一个在慢例程之前执行,第二个在其他所有程序之后执行。
问题是,#progressOverlay
直到完成后,视觉外观才会改变myBigRoutine()
。
结果是进度覆盖在屏幕上闪烁一秒钟,然后立即再次隐藏(全部没有动画)
有没有办法强制视觉更新/重绘在大型 JavaScript 例程之前(或者,甚至更好,并行)发生?