0

所以我使用下面的代码首先获取用户的朋友,然后使用用户的朋友 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!");
    }
    });
    }
4

2 回答 2

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
于 2013-11-09T11:16:02.417 回答
0

您应该使用 Facebook 批处理 API。有了它,您可以将更多请求排入一个队列,并且只需支付一次延迟成本。https://developers.facebook.com/docs/reference/api/batch/

于 2013-09-20T17:05:37.353 回答