1
我正在嘗試收集在循環中調用的FB API異步請求的結果。我用下面的代碼:如何收集來自Facebook API請求的迴應?
function getPicturesByUserIds(friendsIdList) {
var userPictures = [];
for (var i = 0; i < friendsIdList.length; i++) {
(function() {
var userId = friendsIdList[i];
var j = i;
var friendsIdListLength = friendsIdList.length - 1;
FB.api('/'+userId+'/picture?type=large', function (responce) {
if (responce && !responce.error) {
userPictures[userId] = responce.data.url;
}
if (j >= friendsIdListLength) {
console.log(userPictures);
sendPicturesAndGetResponse(userPictures);
}
});
})();
}
}
此代碼在Chrome,但在Firefox 陣列userPictures是空的。
'userPictures'應該是一個對象(因爲你使用userID鍵入),或者你應該使用索引'i'。除此之外,你的循環不斷重置'userID',所以你所有的回調函數都會解引用相同的值 - 你實際上想通過'(function(id){....}(id ))'call你必須避免這個 –