为了账号安全,请及时绑定邮箱和手机立即绑定

vue axios请求数据问题?

vue axios请求数据问题?

翻阅古今 2019-03-19 17:19:11
写了一个函数 返回数据,Vue.prototype.$http = axiosVue.prototype.getData = function(url){    let _data ='';    this.$http.get(url).then(res=>{        _data = res.data;      });    return _data;}这样获取不到数据,返回的还是空。不知道怎么解决,或有什么办法可以对axios设置同步。我是想这样直接获取数据this.list = this.getData(url);或者data的时候,直接返回数据data:function(){return this.getData(url);}
查看完整描述

4 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

用 async await 可以达到局部的同步写法


Vue.prototype.getData = function(url){

   return this.$http.get(url).then(res=>res.data);

}

//调用

this.getData('url').then(res=>{

   console.log(res)

})

//async 

async function(){

  var data = await this.getData(url);

  console.log(data);

}


查看完整回答
反对 回复 2019-03-29
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这是典型的异步场景。因为数据在服务器上,正常的下载需要数秒不等的时间,为了不影响用户的正常使用,所以会进入异步流程,所以你直接取是取不到的。

解决方案楼上说的基本都对。目前通用的解决方案是使用 Promise,我刚好做过一次关于 Promise 的讲堂:Promise 的 N 种用法。推荐你看一下。


查看完整回答
反对 回复 2019-03-29
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

async await了解一下 典型异步了


查看完整回答
反对 回复 2019-03-29
  • 4 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信