2017-06-28 75 views
1

我現在試圖用axios javascript.But獲取/張貼api請求,但問題是我的Api獲取函數返回結果,然後它從服務器接收數據。我的代碼是關於javascript上的http請求的時間問題

function Api(base_url) { 
    this.base_url = base_url; 
} 

Api.prototype = { 
    constructor: Api, 
    get: function (route) { 
     var url = this.base_url + route; 

     axios.get(url) 
      .then(
       response => { 
        console.log(response.data.data); 
        return response.data.data; 
       }) 
     return "hello"; 
    }, 
    post: function (route) { 

    } 
} 

我呼籲get函數這樣

api = new Api("http://localhost:8080/"); 
      var data = api.get("post/get"); 
      console.log(data); 

而不是從服務器等待回覆,我的函數返回「你好」作爲回報data.Can有人幫我,爲什麼,以及如何解決這個嗎?

回答

0

使用此代碼:

Api.prototype = { 
    constructor: Api, 
    get: function (route) { 
     var url = this.base_url + route; 

     axios.get(url) 
      .then(function (response) { 
       console.log(response.data.data); 
       return response.data.data; 
      }) 
      .catch(function (error) { 
       return "hello"; 
      } 
    }, 
    post: function (route) { 

    } 
} 
0

這就是它應該做的,我想。 我從來沒有使用過這個API,但是對於常規的ajax請求,發送請求的函數將立即從請求/響應中立即返回它的值。一旦請求完成,最好的方式就是在響應回調中調用你需要的東西。 AJAX請求是異步的,並沒有乾淨的方式來調用一個函數來執行一個AJAX請求,並使這個非常相同的函數返回您的響應數據 - 除非您將AJAX請求轉換爲同步操作,但這是非常非常糟糕的做法。