gpt4 book ai didi

javascript - 回调函数返回 wordpress 博客上具有给定类别的所有帖子的数组

转载 作者:行者123 更新时间:2023-11-30 14:42:01 25 4
gpt4 key购买 nike

我正在尝试编写一个回调函数,它返回 wordpress 博客中给定类别的所有帖子的数组,以便我可以将这些数据提取到静态站点编译器中。

The API一次只返回 100 个,所以我必须逐页遍历它们并将它们添加到数组中。

我已经设法遍历它们并将它们记录到控制台,但我不知道如何在使用 promises 时将它们添加到数组中。我不确定我应该向 push()

传递什么论据

如有任何指点,我们将不胜感激。

const getData = (category, number = 0, page = 1) =>
fetch(`https://public-api.wordpress.com/rest/v1/sites/www.accessaa.co.uk/posts?category=${category}&number=${number}&page=${page}&order_by=date`)
.then(res => res.json())

const found = (category) =>
getData(category)
.then(json => json.found)

var total = new Promise(function(resolve, reject) {
resolve(found('news'))
})

var times = total.then(function(value) {
return Math.ceil(value/100)
})

var calls = times
.then(function(callsToMake) {
items = []
for (i = 1; i < callsToMake; i++) {
getData('news', 100, i)
.then(json => json.posts)
.then(items.push(posts))
}
return items
})

最佳答案

出于可读性目的,我更改了一些代码结构。

您的问题的解决方案是创建一个异步任务池,然后并行运行它们。 Promise.all([promises]) 非常适合后者,因为它将返回一个已解决值的数组,直到所有 promise 都已成功解决或其中一个已被拒绝。

const getData = (category, number = 0, page = 1) =>
fetch(`https://public-api.wordpress.com/rest/v1/sites/www.accessaa.co.uk/posts?category=${category}&number=${number}&page=${page}&order_by=date`)
.then(res => res.json())

const found = (category)=> getData(category).then(json => json.found);

found('news')
.then((value)=>{
return Math.ceil(value/100);
})
.then((callsToMake)=>{
let tasks = [];
for (i = 1; i < callsToMake; i++) {
tasks.push(getData('news', 100, i)) //<--- Fill tasks array with promises that will eventually return a value
}
return Promise.all(tasks); //<-- Run these tasks in parallel and return an array of the resolved values of the N Promises.
})
.then((arrOfPosts)=>{
let allPosts = [];
for(var elem of arrOfPosts)
allPosts = allPosts.concat(elem.posts);

console.log(allPosts);
}).catch((err)=>{
console.log(err);
})

关于javascript - 回调函数返回 wordpress 博客上具有给定类别的所有帖子的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49498773/

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