vue axios请求数据问题?

写了一个函数 返回数据,


Vue.prototype.$http = axios


Vue.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);

}


翻阅古今
浏览 491回答 4
4回答

拉丁的传说

用 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);}

料青山看我应如是

这是典型的异步场景。因为数据在服务器上,正常的下载需要数秒不等的时间,为了不影响用户的正常使用,所以会进入异步流程,所以你直接取是取不到的。解决方案楼上说的基本都对。目前通用的解决方案是使用 Promise,我刚好做过一次关于 Promise 的讲堂:Promise 的 N 种用法。推荐你看一下。

芜湖不芜

async await了解一下 典型异步了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript