我有一些javascript代码正在执行之前它应该是,我不知道为什么。基本上,我有一个应该执行50,000次的for循环。但是,这需要一段时间,所以我希望有一个进度条,在执行for循环时更新。所以,我有一个if语句,如果u为500,则o的值设置为0,进度条更新为1%,如果进度条为100%,则执行其他一些代码。但是,在你达到100之前,其他代码正在执行,我不知道为什么。
function thisFunction(){
var o=0;
var u=0;
for(i=1;i<=50000;i++){
if(o===500){
o=0;
u +=1;
$("#myProgressBar .progress .progress-bar").css('width',u+'%');
$("#myProgressBar .progress .progress-bar").html(u+'%');
if(u>99){
$("#myProgressBar").addClass("hidden");
/*Other code*/
}
else{
}
}
else{
}
/*code that needs to be executed 50,000 times*/
o +=1;
}
答案 0 :(得分:3)
这可能是因为单线程的JavaScript无法允许浏览器在for
循环仍在运行时呈现更新的进度条。
通常情况下,进度条更新应该使用requestAnimationFrame
,或者甚至使用Web Worker,或者通常是任何类型的异步回调,允许浏览器在处理过程中继续执行操作。