2009-06-16 9 views
0

かなり大量のデータを扱うときにjQueryループを最適化する方法はありますか?ブラウザはデータがループしている間にロックする傾向があり、IE8以下のものは「スクリプトの実行が遅すぎる」というメッセージを出します。jQueryループを最適化する

私は、データベースからフィールドのフィールド名と値を取得し、自動的にその値を持つフィールドを移入するjQuery.each(データ、機能(I、ヴァル)を使用しています。

データはサーバーに。

任意の提案をいただければ幸いです。ログイン時に生成されたJSONファイルから

+2

コード最適化のヒントを求めているときは、コードを入れるのが一般的です。この問題は、ループ機構のコードよりもループ内のコードになりやすい。 –

+0

私はそれを発見しましたsetTimeout( ""、5);ブラウザの負荷を軽減するようです。 – Choog

答えて

0

私はこの同じ問題が結果をループしているのを経験しましたが、each()関数は使用しません。 Ajaxコールバック関数で発生するブロック動作は、「ロード」インジケータを含め、ページをロックします。

私がまだ実装していない1つの解決策は、ajaxに結果を 'チャンク'で再帰的にプルすることと、x個の結果を一度に表示することです(20〜50?)。このようにして、ユーザーは即時のフィードバックを得て、ロックの認識は行われません。

多分あなたのために働くかもしれない何か -

+0

「スロットル」と呼ばれるjqueryプラグインがあります。 – Choog

+0

しかし、私はそれを働かせることはできません。 – Choog

0

プッシュ遅いループ反復を取り、待っている間に忙しいユーザーを維持します目の保養を作成していますサーバーからの結果。ループの結果がブロッキングでない場合は、サーバーにコールバック関数を送信し、ユーザーにワークフローを継続します。

1

最近のGoogle Tech Talkでは、数日前の.each()に大きなオーバーヘッドがあり、その理由を述べた高性能JavaScriptについて語っています。

http://www.youtube.com/watch?v=mHtdZgou0qU

これらのものは修正するのはかなり複雑になることができます。

この操作はどのくらいの頻度で行われますか? setTimeoutを使用して小さな部分に分割して、実行中に進行状況バーを表示できますか?