首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免浏览器崩溃?

如何避免浏览器崩溃?
EN

Stack Overflow用户
提问于 2012-05-02 18:29:33
回答 1查看 75关注 0票数 0

我需要一种方法来获得用户的朋友ids。我写了这段代码,但是我的浏览器崩溃了(可能是因为我有2500个朋友):

代码语言:javascript
复制
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消耗较少的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-02 18:31:50

至少,在一个变量中编译所有的超文本标记语言,然后在一个.innerHTML赋值中将其传递给DOM。现在,你的强制页面为你的2500个朋友每个人重绘两次,因为浏览器需要在innerHTML上更新自己对页面的内部理解,在+=中读取,然后在写回时再次刷新。

代码语言:javascript
复制
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,但这只是围绕JS不可变字符串和垃圾收集器进行优化。一些JS引擎最终可能会比你手工做得更好。然而,做一次innerHTML赋值几乎肯定会带来巨大的速度提升,因为它的字面意思是“重新生成所有东西,然后应用一点,然后再把所有东西编码回去”,而且几乎没有任何方法可以在JS+HTML引擎连接中自动优化这一内部循环。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10411941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档