0

フレンド ID のリストを取得するクエリがあります。

'SELECT owner FROM photo WHERE object_id IN (SELECT object_id FROM photo_tag WHERE subject=me())'

それらのIDの名前を取得したいので、次のようにしてみました:

var frndTagNames = new Array();

for (var j=0;j<frndTagIds.fql_result_set.length;j++)

{
    FB.api('/'+frndTagIds.fql_result_set[j].owner+'', function(frnds) {
    frndTagNames[j] = frnds.name;
});
}   
console.log(frndTagNames);

問題は、「frndTagNames」配列を FB.api スコープ外に出せないことです。

ところで、このコード全体は別の FB.api コード内にあります

何か案は ?

4

1 に答える 1

0

frndTagNamesは、コールバック関数内で使用可能である必要があります。どのような種類の応答がありますか(たとえば、ある種のエラー)?console.log(response)をコールバック関数に追加してみてください。

たとえば、次のように、配列を定義して、コールバック関数内でその配列に値を割り当てることができます。


var foo = new Array();

FB.api('/me/', function(resp) { foo[0]=resp.name });

console.log(foo[0])
"Brian Ledsworth"

ネストされたブロックの例(「this」のコンテキストを保持します)。これを_thatに割り当ててから、_that.frndTagNamesを使用します

var _that = this;
FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    FB.api('/me/friends', function(response) {
      if(response && response.data) {
        for(i=0;i<response.data.length;i++) {
          _that.friendsFacebookColl.add(response.data[i]);
        }
      }
    });
  }
});
于 2013-02-15T20:39:20.353 に答える