鍍金池/ 問答/Python  HTML/ vue axios請求數(shù)據(jù)問題?

vue axios請求數(shù)據(jù)問題?

寫了一個函數(shù) 返回數(shù)據(jù),

Vue.prototype.$http = axios

Vue.prototype.getData = function(url){
    let _data ='';
    this.$http.get(url).then(res=>{
        _data = res.data;
      });
    return _data;
}

這樣獲取不到數(shù)據(jù),返回的還是空。不知道怎么解決,或有什么辦法可以對axios設(shè)置同步。

我是想這樣直接獲取數(shù)據(jù)

this.list = this.getData(url);

或者data的時候,直接返回數(shù)據(jù)

data:function(){

return this.getData(url);

}

回答
編輯回答
故林

async await了解一下 典型異步了

2017年1月3日 02:07
編輯回答
兔寶寶

不用同步。。??梢赃@樣
定義

Vue.prototype.getData = function(url){
    return axios.get(url).then(res=>{
        return res.data
    });
}

應(yīng)用

this.getData(url).then(data => console.log(data)) 
2018年9月6日 10:28
編輯回答
不將就

可以參考nuxt.js的asyncData的處理方式。不太了解你是服務(wù)器端渲染還是客戶端渲染。
服務(wù)器端渲染和客戶單渲染好像都是對render方法做了一定的修改。插入一部數(shù)據(jù)的。

2017年5月30日 13:14
編輯回答
薄荷糖

async await 可以達到局部的同步寫法

Vue.prototype.getData = function(url){
   return this.$http.get(url).then(res=>res.data);
}
//調(diào)用
this.getData('url').then(res=>{
   console.log(res)
})
//async 
async function(){
  var data = await this.getData(url);
  console.log(data);
}
2017年1月31日 22:49
編輯回答
青瓷

謝邀。這是典型的異步場景。因為數(shù)據(jù)在服務(wù)器上,正常的下載需要數(shù)秒不等的時間,為了不影響用戶的正常使用,所以會進入異步流程,所以你直接取是取不到的。

解決方案樓上說的基本都對。目前通用的解決方案是使用 Promise,我剛好做過一次關(guān)于 Promise 的講堂:Promise 的 N 種用法。推薦你看一下。

2018年4月3日 14:11