Неясно, где вы пытаетесь получить доступ к отсортированным друзьям, но я предполагаю, что ваша проблема в том, что вход в Facebook является асинхронным, поэтому ответ приходит спустя некоторое время после завершения функции facebook
.Таким образом, если вы пытаетесь использовать данные sortedfriends сразу после вызова функции facebook
, данные еще не будут там, потому что вход в систему еще не завершен.
Единственный способ использоватьsortedfriends
данные поступают от обработчика успеха к вызову входа в систему (где ваш console.log уже проверяет наличие данных).Если вы хотите использовать его в другом коде, то вызовите этот другой код из обработчика успеха для вызова входа в систему.Вы не можете вызвать этот код сразу после вызова функции facebook
.
Эта логика не будет работать из-за асинхронного характера вызова входа в систему (он не завершился, когда вызов facebook
возвращается и выполнение продолжаетсяпосле него:
var sortedfriends = [];
facebook(sortedfriends);
// use sortedfriends here
Вместо этого вы должны сделать такой тип структуры:
var sortedfriends = [];
facebook(sortedfriends);
// nothing executes here
И внутри вашего вызова в Facebook, где у вас это есть, добавить вызов функции в любой кодВы хотите использовать данные отсортированных друзей:
else if(response.session) {
myId = response.session.uid;
access_token = response.session.access_token;
var D = new Array();
this.access_token = access_token;
FB.api('/me/feed?access_token=' + access_token + '&limit=100', function(response, sortedfriends) {
for( i=0; i<response.data.length; i++) {
var msg = response.data[i];
D.push(msg);
}
sortedfriends = somefunction(D, myID);
//i know somefunction works because if i do console.log(sortedfriends) it shows me the right values...
// call the rest of your code here that will use sortedfriends
doSomethingWithSortedFriends(sortedfriends);
});