gpt4 book ai didi

javascript - 如何使用 promise 和递归通过 Facebook Graph API 检索用户的所有帖子?

转载 作者:行者123 更新时间:2023-12-04 01:10:53 24 4
gpt4 key购买 nike

我目前正在开发一个使用 Facebook Graph API 的网络应用。

我想实现的是获取一个用户的所有帖子。

但是,这并不容易,因为我必须对结果进行分页。

此刻我正在为 promise 而苦苦挣扎。

我试图实现的是用帖子对象填充一个数组。

因此我使用了无法按预期工作的 promise 和递归。

我的代码目前如下所示:

// Here I retrieve the user with his or her posts,
// just the first 25 due to pagination
if (accessToken) {
return new Promise(resolve => {
FB.api('/me?fields=id,name,posts&access_token=' + accessToken, response => {
this.get('currentUser').set('content', response);
resolve()
})
})
}

// Returns all posts of a given user
function getAllPostsOfUser(posts, postsArr) {
// Process each post of the current pagination level
for (var post of posts.data) {
// Only store meaningful posts
if (post !== undefined && post.message !== undefined) {
postsArr.push(post)
}
}

// Further posts are retrievalable via paging.next which is an url
if (posts.data.length !== 0 && posts.paging.next !== undefined) {
FB.api(posts.paging.next, response => {
getAllPostsOfUser(response, postsArr)
resolve()
})
}

return postsArr
}

var posts = getAllPostsOfUser(this.get('currentUser').content.posts, [])
// I want to use all the posts here
console.log(posts)

我遇到的问题是我想使用放置 console.log 的帖子,但是当我记录帖子数组时,很多帖子都丢失了。

我确信我做错了 promise ,但我不知道是什么。

如果有人能指导我找到解决方案,我会很高兴。

提前谢谢你。

最佳答案

试试这个:

function getAllPosts() {
return new Promise((resolve, reject) => {
let postsArr = [];
function recursiveAPICall(apiURL) {
FB.api(apiURL, (response) => {
if (response && response.data) {
//add response to posts array (merge arrays), check if there is more data via paging
postsArr = postsArr.concat(response.data);
if (response.paging && response.paging.next) {
recursiveAPICall(response.paging.next);
} else {
resolve(postsArr);
}
} else {
reject();
}
});
}
recursiveAPICall("/me/posts?fields=message&limit=100");
});
}

getAllPosts()
.then((response) => {
console.log(response);
})
.catch((e) => {
console.log(e);
});

未经测试,只是我想出的一个简单示例。它返回一个 promise 并使用递归函数来获取所有条目。顺便说一句,您不需要添加访问 token 。如果您已登录,SDK 将在内部使用它。

关于javascript - 如何使用 promise 和递归通过 Facebook Graph API 检索用户的所有帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621010/

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