Javascript代码在它应该执行之前执行

时间:2014-12-09 02:23:57

标签: javascript loops bootstrapping

我有一些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;
    }

1 个答案:

答案 0 :(得分:3)

这可能是因为单线程的JavaScript无法允许浏览器在for循环仍在运行时呈现更新的进度条。

通常情况下,进度条更新应该使用requestAnimationFrame,或者甚至使用Web Worker,或者通常是任何类型的异步回调,允许浏览器在处理过程中继续执行操作。