Ja, dies wird von AngularJS sehr elegant gehandhabt, da sein Dienst $http
um die PromiseAPI herum aufgebaut ist. Grundsätzlich geben Aufrufe an $http
Methoden ein Versprechen zurück und Sie können Versprechen sehr einfach verketten, indem Sie die then
Methode verwenden. Hier ein Beispiel:
$http.get('http://host.com/first')
.then(function(result){
//post-process results and return
return myPostProcess1(result.data);
})
.then(function(resultOfPostProcessing){
return $http.get('http://host.com/second');
})
.then(function(result){
//post-process results of the second call and return
return myPostProcess2(result.data);
})
.then(function(result){
//do something where the last call finished
});
Sie auch Post-Processing und neben $http
Funktion auch kombinieren könnten, es hängt alles davon ab, die interessiert an den Ergebnissen.
$http.get('http://host.com/first')
.then(function(result){
//post-process results and return promise from the next call
myPostProcess1(result.data);
return $http.get('http://host.com/second');
})
.then(function(secondCallResult){
//do something where the second (and the last) call finished
});
Danke Pawel, ich werde es überprüfen. Im Moment habe ich '$ q.all' benutzt und scheint zu tun, was ich will. Aber ich werde das auch versuchen. – Ketan
@Ketan 'q.all' und die hier beschriebene Lösung sind 2 verschiedene Dinge. 'q.all' ist großartig, aber funktioniert nur für parallele Anfragen, das heißt, wenn Sie sich nicht um ihre Reihenfolge kümmern und eine Anfrage nicht von den Ergebnissen einer anderen abhängt. Von Ihrer Frage habe ich verstanden, dass Sie nach Verkettung von Anfragen sind, wo eine Anfrage beendet werden muss, Sie möchten Ergebnisse untersuchen/verarbeiten und erst dann eine weitere Anfrage stellen. –
Es stellte sich heraus, dass es in meinem speziellen Problem in Ordnung war, sie parallel auszuführen, aber was ich eigentlich wollte, war Code auszuführen, wenn alle fertig waren. Aber Ihre Antwort ist immer noch wertvoll, weil ich sicher bin, dass ich früher oder später darauf stoße. Ich werde deine Antwort akzeptieren. – Ketan