はじめに
Facebookにログインするメソッドを実行しようとしています。ログインの成功のコールバックは、現在のユーザーの ID、イベント、フレンド リストを要求し、フレンド リストを実行して各フレンドのイベントを要求し、各フレンドのイベント リストを現在のユーザーのイベントと比較します。
これを多くの個別のリクエストとして実行する理由は、一度に大量のデータを取得してアプリを詰まらせないように、分割する方が効率的だと思われるからです。今はよくわかりません。
問題
すべてのデータを取得するために 1 つの大きな 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
}