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);

问题是我不能在 FB.api 范围之外使用“frndTagNames”数组。

顺便说一句,整个代码都在另一个 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 回答