javascript - 异步/等待函数

标签 javascript api async-await

我正在尝试从网址中提取数据,但不确定我做错了什么。当我 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());

我不确定我应该采取什么不同的做法才能完成 promise 。

编辑:我需要使用带有回调的 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]);
    }
})

最佳答案

异步函数总是返回一个 promise 。当您记录返回值时,异步操作尚未完成 - 控制权必须返回到 JavaScript 主循环,然后异步操作才能继续。

您必须等待返回的 promise :

getTeams().then(console.log.bind(console));

关于javascript - 异步/等待函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58698756/

相关文章:

javascript - 为什么用 jQuery 在 head 中插入脚本如此奇怪?

c# - 同步 WCF 操作的异步实现

javascript - Mongodb sort Aggregation in same order ids 在过滤器上传递

Javascript 虚假值(null、undefined、false、空字符串 : "" or '' and 0) and comparison(==) operator

api - 从 Google Adwords API 中提取广告事件列表?

swift - 未在完成处理程序中设置变量

python - 如何获取 Google Books API 中的类别列表?

javascript - 我如何解决我的 promise 中已经运行的 promise

c# - 使用 C# 的异步 HttpWebRequest 调用

javascript - 你如何在 NodeJS 模块中共享常量?