我从PokeAPI获取数据到我的个人项目,我需要获取两次,首先获取一个口袋妖怪列表,它给予了我一个口袋妖怪名称列表,范围是我指定的,在这种情况下是0到20,然后我Map这些数据来获取这20个口袋妖怪中的每一个的特定数据,但它不起作用。
抓取过程正在工作,如果我设置控制台,我可以在控制台上看到所有内容。log(res),但是我不能将数据推送到products变量中,我应该如何处理呢?
export const getStaticProps: GetStaticProps = async () => {
let products: any = [];
const response = await fetch('https://pokeapi.co/api/v2/pokemon?limit=20&offset=0');
const list = await response.json();
list.results.map((e: any) => {
fetch(`https://pokeapi.co/api/v2/pokemon/${e.name}`)
.then(res => res.json())
.then(res => {
products.push(res);
console.log(e.name);
})
})
return {
props: {products,},
}
}
我已经尝试过async/await方法,尝试将map Package 到IIFE中,将所有内容 Package 在try/catch中,但没有任何工作,我可以返回第一个fetch(list),但第二个返回空数组。
1条答案
按热度按时间unftdfkk1#
RE @Ivanatias说的话
你想先做出所有的承诺,然后等待它们的结果并返回。
我还建议在这里添加一个捕获,以防它们失败。