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 消費量の少ないアプローチはありますか?

4

1 に答える 1

3

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

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
}

生成された文字列を配列に格納し、それらをまとめてHTMLに割り当てるなど、他のアプローチを使用することもできますがjoin、これはJS不変文字列とガベージコレクターを最適化するだけです。一部のJSエンジンは、最終的には手動で行うよりもはるかに優れている可能性があります。ただし、innerHTMLの割り当てを一度実行すると、文字通り「すべてを再生成してから少し適用し、すべてを再度エンコードする」ことを意味し、JS+内でこの内部ループの実行を自動的に最適化する方法がほとんどないため、速度が大幅に向上することがほぼ保証されます。 HTMLエンジンジャンクション。

于 2012-05-02T10:31:50.293 に答える