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

4

1 回答 1

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

演示在这里

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

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

这样的小提琴

于 2013-08-31T09:35:55.030 回答