gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:40:10 28 4
gpt4 key购买 nike

我正在尝试通过 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com