2016-07-22 1 views
2

Ich versuche, eine Funktion zu erstellen, die eine HTTP-Anforderung in Javascript erstellt und das Ergebnis dieser Anforderung abruft. Leider, ich weiß absolut nicht, wie dieses Ergebnis in einer anderen Funktion, um wieder ..Holen Sie den Wert einer HTTP-Anforderung in Angular JS zurück

hier findet sowohl meine Funktion (beide sollen das gleiche tun):

$scope.getInfo = function() { 
     return $http({ 
      method: 'GET', 
      url: 'https://api.net' 
     }).then(function (response) { 
      return response.data; 
     }); 
    }; 

und die anderen :

$scope.getInfo = function() { 
     var defer = $q.defer(); 
     $http.get('https://api.net').then(function(response) { 
      defer.resolve(response.data); 
     }, function(response) { 
      defer.reject(response); 
     }); 
     return defer.promise; 
    }; 

ich habe eine Menge von Artikeln über die Art und Weise, die Anforderung zu machen, aber nicht, um wieder seinen Wert (einen einfachen Aufruf der Funktion in einem anderen nur die Anzeige „Objekt-Objekt“ und ich didn‘gefunden t eine Lösung finden, um es richtig anzuzeigen).

$scope.test = function() { 
     var myValue = $scope.getInfo(); 
     alert(myValue); /* show [Object object] */ 
    }; 

Können Sie mir bitte helfen?

Antwort

1

Sie wie folgt vorgehen sollte, wenn Versprechen mit:

$http({ 
    method: 'GET', 
    url: 'https://api.net' 
}).then(function (response) { 
    $scope.info = response.data 
}); 

Ihre aktuellen Code Rückkehr ein Versprechen, das ist, warum das Ergebnis von getInfo zurück als Objekt betrachtet wird

Wenn Sie getInfo wollen eine sein Funktion, die Sie wie folgt tun:

$scope.getInfo = function() { 
    return $http({ 
     method: 'GET', 
     url: 'https://api.net' 
    }).then(function (response) { 
     return response.data; 
    }); 
}; 

$scope.getInfo().then(function(result) { 
    alert(result); 
}); 
1

Ein häufiger Fehler bei der Verwendung $http Service ist der Rückgabewert dieser serv zuweisen Eis Methoden zu einer Variablen, die ein Versprechen ist, was nicht das ist, was Sie wollen.

betrachten Sie den Code unten:

$scope.getInfo = function() { 
     return $http({ 
      method: 'GET', 
      url: 'https://api.net' 
     }).then(function (response) { 
      return response.data; 
     }).catch(function(error){ 
      // do something with error 
      throw error; 
     }); 
    }; 

getInfo ist ein Verfahren, das ein Versprechen und dieses Versprechen in Zukunft wieder wird auf einen Datenwert lösen, die Sie wollen.

Wenn Sie es so in Ihrem Controller verwenden:

$scope.test = function() { 
     var myValue = $scope.getInfo(); 
     alert(myValue); /* show [Object object] */ 
    }; 

Wert von myValue ist ein Versprechen (Sie können einfach tun, um ein console.log(myValue)), ist der vorgeschlagene Weg, um diese Methode zu verwenden, wie unten:

$scope.test = function() { 
     $scope.getInfo() 
      .then(function(response){ 
       var myValue = response.data; 
       alert(myValue); /* show [Object object] */ 
      }).catch(function(error) { 
       console.log(error); 
       throw error; 
      }) 

    }; 
Verwandte Themen