Kas*_*sen 1 javascript for-loop facebook-graph-api
我想通过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'});
Run Code Online (Sandbox Code Playgroud)
您需要学习如何处理异步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');
Run Code Online (Sandbox Code Playgroud)
确保您理解这些概念,了解何时处理JavaScript SDK和JavaScript非常重要.