我有一个查询,为我提供了朋友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”数组。
BTW,整个代码都在另一个FB.api代码
中有什么想法吗?
答案 0 :(得分:0)
frndTagNames应该在回调函数中可用。你得到什么样的回应(例如某种错误)?尝试将console.log(响应)添加到回调函数。
例如,我可以定义一个数组并在回调函数中为它分配一个值,如下所示:
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]);
}
}
});
}
});