2012-05-02 9 views
0

ユーザーの友だちIDを取得する方法が必要です。私はこのコードを書いたが、私のブラウザは(私は2500人の友人を持っているかもしれないので)クラッシュ :ブラウザをクラッシュさせないようにするにはどうすればよいですか?

var query = FB.Data.query('SELECT uid2 FROM friend WHERE uid1 = me()'); 

query.wait(function(rows) { 
    var i; 
    for(i=0;i<rows.length;i++){ 
     document.getElementById('friends').innerHTML += i + ') ' + rows[i].uid2 + '<br />'; 

    }}); 

が少ないCPU消費するアプローチはありますか?

答えて

3

少なくともVERYでは、すべてのHTMLを変数にコンパイルしてから、.innerHTMLという1つの割り当てでDOMに渡します。あなたの2500人の友達ごとに強制的にページを2回再描画する必要があります。なぜなら、ブラウザはinnerHTMLのページの内部的な理解を更新する必要があります。これは+=に読み込まれ、再び書き戻されます。

query.wait(function(rows) { 
    var i; 
    var html = ""; 
    for(i=0;i<rows.length;i++){ 
     html += i + ') ' + rows[i].uid2 + '<br />'; 
    } 
    document.getElementById('friends').innerHTML = html 
} 

また、アレイで生成された文字列を格納し、その後joinそれらを一緒にINGのとHTMLへの割り当てが、それはちょうどJS不変文字列とガベージコレクタを周りに最適化しているように、いくつかの他のアプローチを、使用することができます。 JSエンジンの中には、最終的には手作業で行うよりもずっと優れているものがあります。しかし、innerHTMLの割り当ては、文字通り「すべてを再生成してからもう一度やり直してください」という意味で、スピードが大幅に向上することがほぼ保証されています.JS +内部でこれを自動的に最適化する方法はほとんどありませんHTMLエンジンジャンクション。

関連する問題