首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使axios调用同步?

如何使axios调用同步?
EN

Stack Overflow用户
提问于 2018-07-28 02:58:08
回答 2查看 47.5K关注 0票数 13

我遇到了一个问题,get_user()在console.log(usersOutput,'here')之后运行。我如何改变它,让get_user()先运行?

代码语言:javascript
运行
复制
function get_user(user){
        axios.get(`/api/admin/users`,{params:{idnum:user}}).then((user)=>{
           console.log('got user')
           return user.data
        })
}

var UsersFormatter = function(c){
    let usersOutput = 'waiting for change'
    var usersOutput = get_user(c.cell.row.data.sessionUser)
    console.log(usersOutput,' here')
    return usersOutput
}
EN

回答 2

Stack Overflow用户

发布于 2018-07-28 03:02:05

如果你不让它同步,就会阻塞线程,这是你永远不想做的。只需从函数返回promise,并传递promise而不是数据:

代码语言:javascript
运行
复制
function get_user(user){
    // return this promise
    return axios.get(`/api/admin/users`,{params:{idnum:user}}).then((user)=>{
        console.log('got user')
        return user.data
    })
}

var UsersFormatter = function(c){
    // return this promise too, so callers of UserFormatter can get the data 
    return get_user(c.cell.row.data.sessionUser)
    .then((data) => /* format data and return */)
}
票数 12
EN

Stack Overflow用户

发布于 2018-07-28 03:01:13

您可以使用axios promise并使用async/await。所以就像这样:

代码语言:javascript
运行
复制
function get_user(user){
        return axios.get(`/api/admin/users`,{params:{idnum:user}})
}

var UsersFormatter = async function(
    let usersOutput = await get_user(c.cell.row.data.sessionUser)
    console.log(usersOutput,' here')
    return usersOutput
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51564001

复制
相关文章

相似问题

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