【发布时间】:2020-08-19 01:24:12
【问题描述】:
我正在玩 Rick and Morty API,我想获取宇宙中的所有角色 到一个数组中,这样我就不必进行更多的 API 调用来处理我的其余代码。
端点https://rickandmortyapi.com/api/character/以页面的形式返回结果,所以
我必须使用递归在一次 API 调用中获取所有数据。
我可以让它将结果输出到 HTML,但我似乎无法获得完整的 JSON 对象数组。
我使用了一些来自 Axios recursion for paginating an api with a cursor
我为我的问题翻译了这个概念,并将其发布在我的Codepen 这是代码:
async function populatePeople(info, universePeople){ // Retrieve the data from the API
let allPeople = []
let check = ''
try {
return await axios.get(info)
.then((res)=>{
// here the current page results is in res.data.results
for (let i=0; i < res.data.results.length; i++){
item.textContent = JSON.stringify(res.data.results[i])
allPeople.push(res.data.results[i])
}
if (res.data.info.next){
check = res.data.info.next
return allPeople.push(populatePeople(res.data.info.next, allPeople))
}
})
} catch (error) {
console.log(`Error: ${error}`)
} finally {
return allPeople
}
}
populatePeople(allCharacters)
.then(data => console.log(`Final data length: ${data.length}`))
一些敏锐的眼睛和大脑会有所帮助。 这可能是一件非常简单的事情,我只是想念它。
【问题讨论】:
-
请重新格式化您的代码,使其更具可读性。另外,请将问题简化为基本部分。我们不是来为您编写代码的。我建议您尝试使其在没有递归的情况下工作。只要它在没有递归的情况下工作,您就可以重构代码以使用递归。
标签: javascript api recursion