我正在尝试通过javascript SDK下载Facebook墙贴。我设法对前25个帖子进行了调用,但是当我尝试获取pageing.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/