我有一些javascript代码在它应该执行之前就被执行了,我不知道为什么。基本上,我有一个for循环,它应该被执行50,000次。但是,这需要一段时间,所以我希望有一个随着for循环的执行而更新的进度条。所以,我有一个if语句,如果u为500,o的值被设置为0,进度条更新为1%,如果进度条为100%,则执行其他代码。然而,其他代码在u达到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;
}
发布于 2014-12-09 10:44:02
这可能是因为JavaScript是单线程的,不允许浏览器在for
循环仍在运行时呈现更新后的进度条。
通常,进度条更新应该使用requestAnimationFrame
,甚至使用Web Worker,或者通常是任何类型的异步回调,这些回调允许浏览器在处理过程中继续执行操作。
https://stackoverflow.com/questions/27370605
复制相似问题