我试图从网址中提取数据,但不确定我做错了什么。当我console.log返回的result.data时,我得到了一个承诺,但是当我在函数中console.log result.data时,我得到了所有的数据。这是我的代码:
async function getTeams() {
const result = await axios({
method: "get",
url: 'http://api.sportradar.us/ncaafb-t1/teams/FBS/2018/REG/standings.json?api_key=sg8pf7bdjt5u8ueedttyytwx',
});
console.log(result.data);
return result.data;
}
console.log(getTeams());我不知道我该怎么做才能得到一个完整的承诺。
编辑:为了更好地工作,我需要使用带有回调的getTeams().then()。但是,现在我遇到了一个问题,就是将数据存储在.then()中,这样就可以访问全局变量。我的代码现在看起来像是:
async function getTeams() {
const result = await axios({
method: "get",
url: 'http://api.sportradar.us/ncaafb-t1/teams/FBS/2018/REG/standings.json?api_key=sg8pf7bdjt5u8ueedttyytwx',
});
return result.data;
}
let teams = [];
getTeams().then(data => {
let acc = data.division.conferences[0];
for (let i = 0; i < acc.teams.length; i++) {
teams.push(acc.teams[i]);
}
})发布于 2019-11-04 17:59:45
异步函数总是返回一个承诺。在记录返回值时,异步操作尚未完成--在异步操作继续之前,控件必须返回到JavaScript主循环。
你必须等待回报的承诺:
getTeams().then(console.log.bind(console));发布于 2021-11-19 00:24:50
关于承诺,我的问题的解决方案是重组我的代码,以便需要承诺响应的代码在承诺中完成。您可以在允诺中嵌套一个函数,在稍后执行的承诺中更改状态(如果使用的话是React),或者其他各种事情。
getTeams.then(teams => {
// Print out each team
for (let i = 0; i < teams.length; i++) {
console.log(teams[i]);
}
// Set state (in React)
setTeams(teams);
// Do other stuff with teams
}https://stackoverflow.com/questions/58698756
复制相似问题