我有一个转换功能,其覆盖屏幕显示为“正在加载”
SM.prototype.changeScene = function(sceneName){
$("#Loading").removeClass("hide");
$("#loading_curtain").removeClass("offscreen");
$("#acrcurtain").removeClass("offscreen");
$(".loading_text").removeClass("offscreen");
var changeMe = function(){
//lots of loading code (2-5 seconds)
};
window.setTimeout(changeMe, 100);
}
这可以正常工作,setTimeout设置为至少100.如果它被删除或更少,则不会显示加载屏幕。类被正确删除,但它不会显示在屏幕上。延迟是否有任何理由可以帮助它出现?
答案 0 :(得分:0)
在浏览器中运行的JavaScript在更改时不会立即重新绘制屏幕上的元素。它通常会等到没有更多的JavaScript代码运行。
这就是为什么超时允许它重绘,以及为什么没有它就不会立即重绘。
随着超时,正在执行的JavaScript的当前位完成,然后浏览器有机会在“大量加载代码”运行之前重绘。
没有超时,JavaScript代码仍在运行,因此浏览器会一直等到它完成。