2017-06-28 23 views
1

私は今、axios javascriptでget/post APIリクエストを作成しようとしています。問題は、私のコードであるserver.hereからデータを受け取る前に、APIのget関数が結果を返すことです。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) { 

    } 
} 

そして私はリターンとしての私の関数の戻り値「hello」を、この

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リクエストを同期操作にしない限り、非常に同じ関数が応答データを返すようにしていますが、これは非常に悪い習慣です。

関連する問題