2013-05-11 10 views
5

基本的に27,000を超えるオプションをチェックする必要のあるブルートフォースのようなスクリプトを作成し、各チェックの後にdiv内に結果を表示します。多くの要素をチェックしているJavascriptが応答しません

スクリプトは正しくコーディングされています。オプションの数を減らしても十分にうまくいきますが、数秒後に数多くのオプションがあると、スクリプトが応答しないことを示すウィンドウがポップアップします。この多くのオプションを確認しながら、どのように反応させることができますか?

ああ、私はほとんど忘れてしまった。ポップアップウィンドウが表示されたとき(ちょっと変わったとき)にのみデータが表示される。

+0

27000はあなたのコーディング構造以外にはJavaScriptのためにあまりにも多くのオプションのチェックが鈍化の理由であるかもしれないです。私たちにいくつかのコードを示す方が良いです。ループの代わりに 'setTimeout'のようなタイミング関数を使います。 –

+0

作業を小さなステップに分割し、ステップが完了したら 'setTimeout(nextStep、1)'を呼び出します。 – DCoder

+5

[Webワーカー](http://www.html5rocks.com/jp/tutorials/workers/basics/)を調べるとよいかもしれません – Lix

答えて

1

非同期バッチ処理では、あなたの問題を解決することがあります。

var options = ...; // your code 

// I assume you are using something like this 
function processAll() { 
    for(var i=0; i<options.length; ++i) ... // causes unresponsivity 
} 

// try to use this instead 
function batchProcessing(from) { 
    if(from >= options.length) return; 
    var to = Math.min(1000, options.length-from); 
    for(var i=from; i<from+to; ++i) ... // your code 
    // run the next batch asynchronously, let the browser catch the breath 
    setTimeout(batchProcessing.bind(null, from+1000)); 
} 
関連する問題