2016-12-26 7 views
0

Ich arbeite mit angularjs $ http.get() Anfrage. Auf der Seite laden ich zwei Rest API Aufruf. Die API wird korrekt ausgeführt. Ich habe eine Schaltfläche welche die Daten von den zwei Rest-API-Aufrufen verwenden. Ich habe ein Problem, das ist meine Funktion vor der $ http.get() Antwort ausgeführt werden und ich bin nicht in der Lage, das gewünschte Ergebnis zu erhalten. Wie kann ich meine Funktion machen nach der Antwort von der zwei $ http.get() Anfrage auszuführen. Kann

var responsePromise5 = $http.get("1st rest call");     
 
    responsePromise5.success(function(data1) { 
 
     $scope.id = data1.platform.user.id; 
 
\t  var responsePromise = $http.get("2nd rest call");    
 
      responsePromise.success(function(data2) 
 
      { 
 
      console.log(data2.platform.record); 
 
      $scope.records= data2.platform.record; \t \t 
 
      }); 
 
      responsePromise.error(function(data2, status, headers, config) { 
 
      alert("AJAX failed!"); 
 
      }); \t 
 
      }); 
 
      responsePromise5.error(function(data1, status, headers, config) { 
 
      alert("AJAX failed!"); 
 
     }); \t 
 
$scope.hello = function(a,b) 
 
{ 
 
    //here i want to call another rest api 
 
    }
<div ng-repeat="record in records"> 
 
    {{record.name}} 
 
    <button ng-init=hello(record.unin,id)>abc</button> 
 
</div>

an dieser Stelle stecken jemand help.i'm kann
+0

Rufen Sie die $ scope.hello Funktion nach dem bekommen Erfolg des $ http.get – Hmahwish

+0

Siehe [AngularJS $ q Service-API-Referenz - Verkettungsversprechen] (https://docs.angularjs.org/api/ng/service/$q#chaining-promises). Siehe auch [SO: Warum sind angulare $ http Erfolg/Fehler-Methoden veraltet? Aus v1.6 entfernt?] (Http://stackoverflow.com/a/35331339/5535245). – georgeawg

Antwort

0

Sie verwenden $q.all() -

mehrere Versprechungen in ein einziges Versprechen Kombiniert das gelöst wird, wenn alle Eingangs Versprechen sind gelöst.

Weitere Details hier - https://docs.angularjs.org/api/ng/service/$q

+0

können Sie erklären, wie ich $ q.all() im obigen Szenario verwenden kann .Im fest – dockerrrr

+0

Wenn ich Ihre Frage richtig verstanden habe, haben Sie eine Funktion ausgeführt werden, nur nach erfolgreichem Abschluss von 2 Ajax-Anrufe. Dort ist '$ q.all()' nützlich. Sie können Beispiel-Implementierung hier erhalten - https://www.martin-brennan.com/using-q-all-to-resolve-multiple-promises/ – Developer

+0

können Sie mir mit meinem Code pls helfen – dockerrrr

0

nennen, wie Code, den Sie anrufen möchten, nachdem Sie die Reaktion Ihres HTTP-Anforderung innerhalb then wie unten

$http.get('first http request').then(function(res){ 
    $http.get('second http request').then(function(res2){ 
    // your code 
    }) 
    }) 
+0

bro können Sie durch meinen Code gehen – dockerrrr

+0

ich bekomme nicht nur einen einzigen Datensatz. Also muss ich ng-repeat verwenden ... sehe meine Anforderungen – dockerrrr

+0

bitte erstellen Sie einen Plünderer daraus –

Verwandte Themen