首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异步/等待函数

异步/等待函数
EN

Stack Overflow用户
提问于 2019-11-04 17:57:40
回答 2查看 89关注 0票数 0

我试图从网址中提取数据,但不确定我做错了什么。当我console.log返回的result.data时,我得到了一个承诺,但是当我在函数中console.log result.data时,我得到了所有的数据。这是我的代码:

代码语言:javascript
运行
复制
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()中,这样就可以访问全局变量。我的代码现在看起来像是:

代码语言:javascript
运行
复制
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]);
    }
})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-04 17:59:45

异步函数总是返回一个承诺。在记录返回值时,异步操作尚未完成--在异步操作继续之前,控件必须返回到JavaScript主循环。

你必须等待回报的承诺:

代码语言:javascript
运行
复制
getTeams().then(console.log.bind(console));
票数 1
EN

Stack Overflow用户

发布于 2021-11-19 00:24:50

关于承诺,我的问题的解决方案是重组我的代码,以便需要承诺响应的代码在承诺中完成。您可以在允诺中嵌套一个函数,在稍后执行的承诺中更改状态(如果使用的话是React),或者其他各种事情。

代码语言:javascript
运行
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58698756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档