2017-06-28 5 views
1

Ich versuche jetzt, Get/Post API-Anfrage mit axios Javascript.Aber das Problem ist, dass meine Api Funktion erhalten das Ergebnis zurück, bevor es Daten von server.here ist mein CodeTiming-Problem mit HTTP-Anfrage auf Javascript

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) { 

    } 
} 

und ich rufe get-Funktion wie diese

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

Statt dem warten auf Antwort vom Server, meine Funktion return „Hallo“ als Rückkehr data.Can mir jemand helfen, warum und wie diese zu lösen bitte?

Antwort

0

Mit diesem Code:

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

Das ist, was es tun soll, denke ich. Ich habe nie diese API verwendet, aber mit regulären Ajax-Anfragen, die Funktion, von der Sie die Anfrage senden, wird seinen Wert sofort unabhängig von der Anfrage/Antwort zurückgeben. Der beste Weg, etwas zu tun, sobald die Anfrage abgeschlossen ist, besteht darin, das, was Sie im Antwort-Callback benötigen, anzurufen. AJAX-Anfragen sind asynchron, und es gibt keine saubere Möglichkeit, eine Funktion aufzurufen, die AJAX-Anfragen ausführt und dieselbe Funktion die Antwortdaten zurückgibt - es sei denn, man wandelt die AJAX-Anfrage in synchrone Operationen um, aber das ist sehr, sehr schlecht .

Verwandte Themen