我需要一种方法来获得用户的朋友ids。我写了这段代码,但是我的浏览器崩溃了(可能是因为我有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消耗较少的方法?
发布于 2012-05-02 18:31:50
至少,在一个变量中编译所有的超文本标记语言,然后在一个.innerHTML赋值中将其传递给DOM。现在,你的强制页面为你的2500个朋友每个人重绘两次,因为浏览器需要在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,但这只是围绕JS不可变字符串和垃圾收集器进行优化。一些JS引擎最终可能会比你手工做得更好。然而,做一次innerHTML赋值几乎肯定会带来巨大的速度提升,因为它的字面意思是“重新生成所有东西,然后应用一点,然后再把所有东西编码回去”,而且几乎没有任何方法可以在JS+HTML引擎连接中自动优化这一内部循环。
https://stackoverflow.com/questions/10411941
复制相似问题