Javascript で同期の問題が発生しています。以下のコード。相互の友達を取得するための呼び出しを行うと、私の関数はまだ API コールバックを介して配列を埋めていますが、"Quite a bunch: 0"
の出力 は - の出力の前に行われます。console.log(friendID +" -> " + mutualfriends.data.length);
これはコールバック/非同期の問題に違いないことはわかっていますが、対処方法がわかりません。理由で配列を埋めています - 次の部分のためにそれを埋める必要があります。
コード:
function getMutualFriends(friendID)
{
//console.log(response.data[i].id);
try{
FB.api('/me/mutualfriends/'+friendID, function(mutualfriends) {
//console.log(mutualfriends);
//console.log(mutualfriends.data.length);
console.log(friendID +" -> " + mutualfriends.data.length);
mutualFriendsList.push([friendID,mutualfriends.data.length]);
});
}
catch(err){
console.log('error caught: ' +err);
}
}
function getFriendsList()
{
FB.getLoginStatus(function(response){
FB.api('/me/friends', function(response) {
for(i=0; i<response.data.length;i++)
{
var friendID = response.data[i].id;
console.log(friendID);
friendsList.push(friendID);
}
console.log('Interesting, we gathered: '+friendsList.length+' friends,');
console.log('lets check mutual friends now');
for(j=0; j<friendsList.length;j++)
{
getMutualFriends(friendsList[j]);
}
console.log('Quite a bunch: ' + mutualFriendsList.length);
});//friends
});
}