Javascript Progressbar';s在循环内时不更新进度 for(变量i=0;i

Javascript Progressbar';s在循环内时不更新进度 for(变量i=0;i,javascript,jquery,progress-bar,Javascript,Jquery,Progress Bar,我添加了if语句,因为我不想在每个循环中不断更新进度条。循环运行了近222000次。是否有更好的逻辑来更新进度 为什么它从不输入if语句?您可以使用它,只需从代码中稍微优化一下即可: for (var i = 0; i < dataArray.length; i++) { if(((i/dataArray.length)*100)%10 == 0) $("#progressbar").progressbar({ value: (i / dataArr

我添加了if语句,因为我不想在每个循环中不断更新进度条。循环运行了近222000次。是否有更好的逻辑来更新进度


为什么它从不输入if语句?

您可以使用它,只需从代码中稍微优化一下即可:

for (var i = 0; i < dataArray.length; i++) {
        if(((i/dataArray.length)*100)%10 == 0)
            $("#progressbar").progressbar({ value: (i / dataArray.length) * 100 });
        if (resultArray.indexOf(dataArray[i]) == -1) // check for duplicates
            resultArray.push(dataArray[i]);
}

类似于

您可以使用它,只需对代码进行一点优化即可:

for (var i = 0; i < dataArray.length; i++) {
        if(((i/dataArray.length)*100)%10 == 0)
            $("#progressbar").progressbar({ value: (i / dataArray.length) * 100 });
        if (resultArray.indexOf(dataArray[i]) == -1) // check for duplicates
            resultArray.push(dataArray[i]);
}

类似于

只要一条注释,就可以将
$(“#progressbar”)
缓存在循环外的变量中,这样就不必每次调用它。什么是dataArray?显示标记。只需一条注释,就可以将
$(“#progressbar”)
缓存在循环外的变量中,这样就不必每次调用它。什么是dataArray?显示您的标记。即使循环中的其他活动需要时间,它也不会显示progressbar,因为UI线程不会获得任何时间execute@ArunPJohny事实上,我只是想到了这一点。我该如何解决这个问题?@Omar,这取决于你的代码,
//其他代码中发生了什么?@ArunPJohny,没错。添加了一个替代方法,使用函数调用代替循环。@Omar,如果您的“其他代码”就是您发布的,并且没有ajax或其他脚本,无论如何,它都会运行得非常快,进度条是不必要的。即使循环中的其他活动需要时间,它也不会显示进度条,因为UI线程不会获得任何时间execute@ArunPJohny事实上,我只是想到了这一点。我该如何解决这个问题?@Omar,这取决于你的代码,
//其他代码中发生了什么?@ArunPJohny,没错。添加了一个替代方法,使用函数调用代替循环。@Omar,如果您的“其他代码”就是您发布的代码,并且没有ajax或其他脚本,那么它将运行得非常快,并且不需要进度条。
var i = 0;
function update_progress_bar() {
    if (i % 100 == 0) {
        prog_bar.progressbar({
            value: (i / 10000) * 100
        });
    }
    i++;
}