Facebook Javascript SDK метод - PullRequest
       0

Facebook Javascript SDK метод

0 голосов
/ 12 августа 2011

Я использовал метод facebook javascript sdk и вел себя странно.

Фрагмент кода:

FB.api('/me/friends', function(response) {
  friendCount = response.data.length;
  for (i=0; i<friendCount; i++) {
    friendId = response.data[i].id;
    FB.api('/'+friendId, function(response) {
      if (response.birthday)
        resultList.push(new Array(friendId).concat(response.birthday));
      friendCount--;
    });
  }
});

Я ожидаю, что 2d-массив идентификаторов друзей, у которых определено поле дня рождения и их день рождения, но у меня правильные дни рождения, но идентификаторы принадлежат последнему другу в моем списке друзей. Есть идеи, почему это может происходить?

1 Ответ

0 голосов
/ 12 августа 2011

Когда функция обратного вызова для FB.api('/'+friendId, ... вызывается, значение friendId в этом обратном вызове является текущим значением friendId, когда был выполнен обратный вызов, а не значением, когда FB.api('/'+friendId, ... был первоначально выполнен. Следующее должно работать для вас:

FB.api('/me/friends', function(response) {
  friendCount = response.data.length;
  for (i=0; i<friendCount; i++) {
    friendId = response.data[i].id;
    FB.api('/'+friendId, function(response) {
      if (response.birthday)
        resultList.push(new Array(response.id).concat(response.birthday));
      friendCount--;
    });
  }
});
...