javascript - 如何使axios调用同步?

标签 javascript node.js

<分区>

我遇到了 get_user() 在 console.log(usersOutput, 'here') 之后运行的问题。我怎样才能改变它,让 get_user() 首先运行?

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
}

最佳答案

不要使其同步,那样会阻塞线程,这是您永远不想做的。只需从函数返回 promise 并传递 promise 而不是数据:

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 */)
}

关于javascript - 如何使axios调用同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564001/

相关文章:

javascript - Ckeditor5 - "widget toolbar no items"{toolbarId : 'mediaEmbed' }

javascript - 使用 jquery/javascript 隐藏页面加载时的所有重复 div

javascript - Event.target.dataset 返回未定义的 javascript

javascript - 如何解决 Angular 8 中的 View 封装问题?

javascript - 我一直在尝试使用 Node js 访问 json 文件中的数据,但输出未定义

node.js - 谷歌云发布订阅 : Previously valid subscription suddenly unauthorized

javascript - Grails 和 css/javascript 库

javascript - Mongo 和 Node.js : Finding a document by _id using a UUID (GUID)

javascript - Nodejs swig、子字符串或限制字符

node.js - "pre"和 "post"删除中间件未触发