如何在Axios请求中进行优雅的赋值?

var txt='33';
this.Axios.post("/api/Event/get_serve_name",data,{headers:{'Authorization':localStorage.gw_token}}).then(res=>{
                console.log(res)
                txt=res.data.HttpData.data[0].txt;
                
            })
return txt;

如上面的代码,我们再调用之后得到的是33,而不是我们请求之后的数据,这是因为请求是异步的。我们如何实现最后返回的值是我们请求的数据呢?大家有什么操作
阅读 6.5k
3 个回答

Promise

//定义
function getData(){
    return Axios.post(url).then(res=>res.data.HttpData.data[0].txt)
}
//调用
getData().then((txt)=>{
    console.log(txt)
})
//async 调用
async (){
    let txt = await getData();
    console.log(txt)
}

Callback

//定义
function getData(callback){
    Axios.post(url).then(res=>{
        callback(res.data.HttpData.data[0].txt)
    })
}
//调用
getData((txt)=>{
    console.log(txt)
})

你在then里面获取值后立即处理就行了,没必要再赋值到外部变量。

如果需要同步的写法,ES6的 async/await 了解一下

最笨的 回调赋值 return出去
async/await 这东西出来多久了 学习一下啊
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题