我正在尝试从url中提取数据,但是不确定我在做什么错。当我console.log返回返回的result.data时,我得到一个Promise,但是当我在函数内部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]);
}
})
答案 0 :(得分:1)
异步函数总是返回一个Promise。在您记录返回值时,异步操作尚未完成-控制必须返回到JavaScript主循环,异步操作才能继续。
您必须等待返回的承诺:
getTeams().then(console.log.bind(console));