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 に答える