0
我很難理解如何在Fb.api調用之外設置一個變量,該變量位於該調用的回調函數內部。變量photoid
被設置在for
循環內,然後在那個for
循環裏面,我用那個改變photoid
來做一個FB.api調用。 (我甚至使用photoid
構建電話,你會看到)。這部分工作都很好,但我在控制檯中注意到photoid
沒有傳遞到該回調函數中,因此我試圖保存與先前設置的變量(taggedpersonid = specialfriendvar
)相匹配的所有photoid。在Fb.api回調內拉外部變量
我相信這個解決方案與閉包(或許)有關,但我不太瞭解它們,並希望得到一些幫助。我怎樣才能得到我的回調函數中的每個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,並且您可以將其作爲響應的一部分進行訪問。 – CBroe