在FB.api函数中创建一个数据项目

Create an ojbect of data inside FB.api function

本文关键字:一个 数据 项目 数据项 api FB 函数 创建      更新时间:2023-10-04

我正在尝试从facebook获取用户的相册,我已经完成了这项工作,现在我需要在FB.api函数中创建一个带有albumID和albumCover的对象。

因为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
}

您应该在回调中得到响应后继续操作,简单!这是处理异步(如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` 
}
相关文章: