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]);
}
我添加了if语句,因为我不想继续更新每个循环的进度条。循环运行近222000次。是否有更好的逻辑来更新进度?
为什么它永远不会进入if语句?
答案 0 :(得分:1)
您可以使用此功能,只需从代码中进行一些优化:
prog_bar = $("#progressbar");
for (var i = 0; i < dataArray.length; i++) {
if(i%100 == 0)
prog_bar.progressbar({ value: (i / dataArray.length) * 100 });
//other code..
}
你会使用for循环吗?没有什么“暂停”这个循环所以它会非常快地运行,你可能只看到100%,而不是增长。
演示here
当您的“其他代码”正在运行时,您可以调用函数(而不是for循环)来更新进度条:
var i = 0;
function update_progress_bar() {
if (i % 100 == 0) {
prog_bar.progressbar({
value: (i / 10000) * 100
});
}
i++;
}
之类的东西