在 Fb.api 回调中拉出外部变量
Posted
技术标签:
【中文标题】在 Fb.api 回调中拉出外部变量【英文标题】:Pull outside variable inside Fb.api callback 【发布时间】:2015-10-06 17:48:44 【问题描述】:我无法理解如何将在 Fb.api 调用之外设置的变量带入该调用的回调函数中。变量photoid
设置在for
循环内,然后在for
循环内,我使用更改photoid
进行FB.api 调用。 (我什至使用photoid
来构造调用,你会看到)。这部分一切都很好,但我在控制台中注意到photoid
没有传递到该回调函数中,因此我试图保存与先前设置的变量(taggedpersonid = specialfriendvar
)匹配的所有 photoid。
我相信解决方案与闭包有关(也许),但我不太了解它们,希望能得到一些帮助。如果匹配为真,如何在回调函数中获取每个 photoid
变量,以便将其成功保存到我的 photosbasket
数组中?
function proceedToResult()
FB.api('/me', function(response)
var fbid = response.id;
var profile_name_beta = response.name;
console.log(profile_name_beta);
FB.api('/me/photos',
fields: ['id'],
limit: 200
,
function(response)
console.log(response);
if (response && !response.error)
if (response.data.length > 0)
for (var i = 0; i < response.data.length; i++)
var photoid = response.data[i].id;
console.log(photoid);
FB.api('' + photoid + '/tags', function(response)
console.log(response);
console.log("inside photoid is" + photoid);
for (var l = 0; l < response.data.length; l++)
var taggedpersonid = response.data[l].id;
if (taggedpersonid == specialfriendvar) // if photo has tagged same as chosen friend
photosbasket.push(photoid);
console.log(photosbasket);
);
);
);
【问题讨论】:
您可以简单地向/photo-id?fields=id,tags
发出请求,然后API 也会返回该ID,您可以将其作为响应的一部分进行访问。
【参考方案1】:
您可以创建另一个函数,将变量范围限定为该函数并使您的代码更具可读性:
function proceedToResult()
FB.api('/me', function(response)
var fbid = response.id;
var profile_name_beta = response.name;
console.log(profile_name_beta);
FB.api('/me/photos',
fields: ['id'],
limit: 200
,
function(response)
console.log(response);
if (response && !response.error)
if (response.data.length > 0)
for (var i = 0; i < response.data.length; i++)
var photoid = response.data[i].id;
console.log(photoid);
getPhoto(photoid);
);
);
function getPhoto(photoid)
FB.api('' + photoid + '/tags', function(response)
console.log(response);
console.log("inside photoid is" + photoid);
for (var l = 0; l < response.data.length; l++)
var taggedpersonid = response.data[l].id;
if (taggedpersonid == specialfriendvar) // if photo has tagged same as chosen friend
photosbasket.push(photoid);
console.log(photosbasket);
);
【讨论】:
以上是关于在 Fb.api 回调中拉出外部变量的主要内容,如果未能解决你的问题,请参考以下文章