我正在尝试从Facebook获取用户的相册,我已经完成了这项工作,现在我需要使用albumID和albumCover在FB.api函数中创建一个对象。
因为FB.api是一个异步函数,所以我无法做到这一点。
这是我的代码:
var getUserAlbum = function () {
var token = 'access token';
var albums = [];
FB.api(
"/me/albums/", {'accessToken': token},
function (album) {
if (album && !album.error) {
$(album.data).each(function (k, v) {
FB.api(
"/"+ v.id +"/picture",
function (albumCover) {
if (albumCover && !albumCover.error) {
var id = v.id;
var url = k.url;
$(albumCover.data).each(function (i, k) {
albums.push({
"id": v.id,
"url": k.url
});
});
}
}
);
});
console.log(albums); // it is giving me blank array
//because it executes before FB.api ends
}
}
);
console.log(albums); // also blank here
}
答案 0 :(得分:0)
你应该在回调中得到答案后继续,简单!这是处理异步(如ajax)请求的最明显方式。
代码:
var getUserAlbum = function () {
...
...
FB.api(
"/"+ v.id +"/picture",
function (albumCover) {
if (albumCover && !albumCover.error) {
var id = v.id;
var url = k.url;
$(albumCover.data).each(function (i, k) {
albums.push({
"id": v.id,
"url": k.url
});
});
// EDIT
console.log(albums);
proceed(albums);
}
}
);
...
...
}
function proceed(albums) {
// do whatever you want to do with the `albums`
}