在循环内部,Progressbar的进度不会更新

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语句?

你可以使用它,只需从你的代码中进行一些优化:

 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%,而不是增长。

在这里演示

您可以改为调用一个函数(而不是for循环)来更新进度条,因为您的“其他代码”正在运行:

 var i = 0; function update_progress_bar() { if (i % 100 == 0) { prog_bar.progressbar({ value: (i / 10000) * 100 }); } i++; } 

这样的小提琴