因此,我使用下面的代码首先获取用户朋友,然后使用用户朋友ID生成他们拥有的共同朋友的数量。清楚地遍历所有朋友并每次比较它是一个漫长的过程,但它的工作原理。但是,页面需要一段时间才能加载。如何减少所需的时间或优化以下代码?
function getFriends()
{
FB.api('/me/friends', function(response) {
friendCount = response.data.length;
$("h2").append(friendCount+ ' friends');
if(response.data) {
$.each(response.data,function(index,friend) {
FB.api('/me/mutualfriends/'+friend.id, function(mutualfriends) {
$("#results").append('<ul><li>' + friend.name + ' has id:' + friend.id + ' has mutual friends: ' + mutualfriends.data.length + '</li></ul>');
$("#results").append('<img src="http://graph.facebook.com/' + friend.id + '/picture" />');
});
});
} else {
console.log("Error!");
}
});
}
答案 0 :(得分:7)
我知道这是一个非常古老的问题,但我仍然会给那些可能最终看到这里的人添加这个答案 这是一种使用FQL计算共同朋友数量的优化方法。
select mutual_friend_count,uid,name from user where uid in
(select uid2 from friend where uid1=me()) order by mutual_friend_count desc
答案 1 :(得分:0)
您应该使用Facebook Batch Api。有了它,您可以将更多请求排入一个,并且只需支付延迟成本一次。 https://developers.facebook.com/docs/reference/api/batch/