介绍
我正在尝试运行一种登录 facebook 的方法。登录成功回调请求当前用户的id,他们的事件,他们的朋友列表,然后遍历朋友列表,为他们的每个朋友请求事件,并将每个朋友的事件列表与当前用户的事件进行比较。
我运行这个作为许多单独的请求的原因是,分解它似乎更有效,所以我不会一次获得如此巨大的数据块并阻塞我的应用程序。现在我不太确定。
问题
我想就是否应该只发出一个大的 ajax 请求来获取所有数据,或者是否应该将其分解为较小的调用获得一些建议。
如果我应该把它分解成更小的电话,我能得到一些关于最好的方法的建议吗?例如,我应该将它们全部链接为彼此的回调吗?
似乎前进的方向是:1.获取用户的ID
获取用户的事件列表和获取用户的好友列表可以独立执行,不必链接在一起
获取用户的好友列表(作为第 2 步的回调 - 在收到事件列表和好友列表后)
为每个朋友运行用户事件与他们朋友的事件(作为第 3 步的回调)
(对于不可靠的格式,我感到很抱歉——我尝试过处理代码格式,但由于某种原因,它今天不想工作:()
function collectFriendsRankedByCommonEvents(){
var myId;
var eventComparisonData = [];
var myData;
var myFriendsList;
//login with permission to userEvents, Friendslist and friend's events
FB.login(function(response){
if(response.status == 'connected'){
FB.api('/me', function(response) { myId = response['id'] });
FB.api((myId + '?fields=id,events'), 'GET', function(response){ myData = response })
FB.api((myId + '?fields=id,friends'), 'GET', function(response){ myFriendsList = response })
for(i=0; i < myFriendsList.length; i++){
var thisFriendId = myFriendsList[i]
var thisFriendData; //call to API to request friend's event data
var comparisonWithThisFriend = compareFriendEventsWithMe(myData, thisFriendData);
}
eventComparisonData.push(comparisonWithThisFriend);
} else { console.log('couldn\'t connect to facebook') }
},
{scope: 'user_friends, friends_events'}
);
//to iterative rendering method
}