javascript - 异步/等待函数
问题描述
我正在尝试从 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]);
}
})
解决方案
异步函数总是返回一个承诺。在您记录返回值时,异步操作尚未完成——控制必须返回到 JavaScript 主循环,然后才能继续异步操作。
您必须等待返回的承诺:
getTeams().then(console.log.bind(console));
推荐阅读
- javascript - 将特定值注入对象构造函数
- bash - Bash 和 curl 脚本问题
- mysql - 使用 Google Cloud SQL 连接 3 个表,其中多个事件关联到每个表中的相同唯一 ID
- php - 具有类型类/接口名称的类型声明是什么意思?
- angular - 错误:非法状态:无法加载指令 NgClass 的摘要
- rest - 是否有标准标头来清除 RESTful API 中任意 URL 的缓存
- java - 正则表达式帮助而不是在java中拆分
- oracle - 如何根据 APP_USER Id 显示信息?甲骨文顶点
- javascript - js中变量内容的变化
- ios - 架构 x86_64 Azure Cognitive-Speech To Text 的未定义符号