0

非常に長いHTMLテーブルを作成するJavaScript関数buildTableがあります。

 function buildTable() {

                for (var i = 0; i < rowCount; i++) {

     .. code to create table

}

}

buildToolsetTableに時間がかかりすぎ、数秒後にIE 7は、スクリプトを実行し続けたい場合にプロンプ​​トを表示します。window.setTimeoutを使用して別の呼び出しを行い、実行を更新できることを読みましたが、誰かが実装している場合は、非常に役立ちます。

4

1 に答える 1

2

ループを反復ごとに呼び出される個別の関数に分割する、次のようなものが必要です。

(function(n) {
    var i = 0;

    function doWork() {
        // do one row's worth of stuff here
        ...

        if (++i < n) {
            setTimeout(doWork, 0);
        } else {
            // do your tidy up here
            ...
        }
    }

    doWork(); // start the first iteration
})(rowCount);

呼び出すsetTimeout()と、ブラウザはUIイベント処理を独自のコードに分散させることができます。

http://jsfiddle.net/alnitak/8wXTT/を参照してください

さらに楽しくするには、単一の反復と整理された関数のコールバックを作成して、このコードをスタンドアロンにして、必要なパラメーターを渡すだけでよいようにします。

于 2012-05-09T20:19:28.707 に答える