2012-04-09 86 views
0

基本上这就是我想要做的递归Facebook的API调用

- 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.api调用到外面FB范围做某件事之前完成?
  2. 什么是做类似的东西(递归FB API调用)的最佳实践?

感谢您的回答

回答

1

你应该在Batch API读了。它允许您在Facebook服务器上进行单次往返访问多个请求。应该大大加快速度。