javascript - 通过 javascript 和 FB.api 下载 facebook 帖子时如何进行分页?

标签 javascript facebook-graph-api for-loop

我正在尝试通过 javascript SDK 下载 facebook 墙贴。我设法调用了前 25 个帖子,但是当我尝试获取 paging.next 并使用循环将其提供给新调用,然后迭代它直到没有更多页面可用时,我遇到了麻烦。

代码生成同一个页面 10 次,我不明白。它应该给出下一页、下一页和下一页..?

FB.login(function(response){

        // FIRST CALL THAT CALLS FOR PAGENAME/FEED
        FB.api(request, function (response) {

            // PRINTS TO LOG AND DECLARES X AS THE NEXT PAGE
            console.log(response.paging.next);
            var x = response.paging.next;

            // LOOP THAT PREFERABLY SHOULD CONTINUE UNTIL NO MORE PAGES
            // BUT I WILL DEAL WITH THAT LATER
            for (i = 0; i < 10; i++) {

                // CALLS X WHICH ALSO GIVES ME RHE NEXT PAGE
                // BUT FOR SOME REASON THE CODE DOES NOT MANAGE TO CHANGE
                // X AND DO A NEW CALL
                FB.api(x, function (res){

                    console.log(i);
                    console.log(res.paging.next);
                    // HERE I RESPECIFY X
                    x = res.paging.next;

                    });

                };

           }

          ); 

    }, {scope: 'publish_actions'});

最佳答案

您需要学习如何处理异步 JavaScript 以及如何执行递归函数。您正尝试在异步 API 调用设置它之前使用“x”。意思是,整个 for 循环甚至在“x”被设置一次之前就完成了——因为 API 调用需要一段时间。

这是一些快速代码,没有测试它但它应该显示一个解决方案:

var items = [];
function apiCall(next) {
    FB.api(next, function (response) {
        for (var i = 0; i < response.data.length; i++) {
            //add all posts to the items array
            items.push(response.data[i]);
        }
        if (response.paging && response.paging.next) {
            //call function recursively until there is no "next"
            apiCall(response.paging.next);
        } else {
            //this is when it´s done
            console.log(items);
        }
    });
}
apiCall('/page-id/feed');

确保您理解这些概念,在处理 JavaScript SDK 和一般 JavaScript 时了解这些概念非常重要。

关于javascript - 通过 javascript 和 FB.api 下载 facebook 帖子时如何进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323991/

相关文章:

javascript - 将 JavaScript 从标记移动到单独的 .js 文件

facebook - 如何从 Facebook/Spotify 获取音乐收听数据?

facebook-graph-api - Facebook 图形 API : Get user city (location)

swift - 在 Swift 中访问结构数组的索引#

c# - 具有 1 个元素的数组在 for 循环中导致错误

javascript - iPhone 6s 上的一个 three.js 视频示例不起作用(只有黑色面板)

php - 网站关闭优惠 PHP/Javascript

javascript - jquery onblur 不触发

ruby-on-rails - 使用 Rails 获取 Web 应用程序页面的 FB Likes 总数

linux - 定义范围的 bash for 循环不起作用