递归Facebook API调用

时间:2012-04-09 12:21:22

标签: facebook facebook-javascript-sdk

基本上这就是我想做的事情

- Get all my likes (page likes)
- Get all my friends
- for each of my friends, get their likes
- for each of their likes, do something

现在,我这样做的方法是使用JS SDK,因为我已经尝试过PHP SDK并且它非常慢(如此慢,以至于最大执行时间的PHP错误开始) ,PHP SDK总是比JS慢吗?我的脚本是这样的:

var newArray = [];
FB.api('me/likes', function(response){
   FB.api('me/friends', function(friends){
       $(friends).each(function(){
           FB.api(this.uid+'/likes', function(fr_likes){
             $(fr_likes).each(function(){
               //save this friend likes to newArray
               newArray.push(this);
             });
           });
       });
   });
});

//call newArray outside FB scope doesn't work at first
console.log(newArray);  //returns [] / empty

但是如果我在一段时间后使用chrome控制台来调用newArray,那么newArray会慢慢填充FB数据。

所以我的问题是:

  1. 在FB范围外做某事之前,我可以等待所有FB.api调用完成吗?
  2. 做类似事情的最佳做法是什么(递归FB api调用)?
  3. 感谢您的回答

1 个答案:

答案 0 :(得分:1)

您应该阅读Batch API。它允许您在Facebook的服务器的单次往返中发出多个请求。应该大大加快速度。