Hoe gebruik ik $q.all(promises) in angularjs

Normaal gesproken zou ik dat doen

$http({
    method:'GET',
    url: 'exmapleURL',
    params: {someParams}
}).then(function(response) {
    console.log(response); // response contains data I need
});

Nu moet ik meerdere van dergelijke aanroepen uitvoeren en ik zou graag willen wachten tot ze allemaal klaar zijn voordat ik iets met hun antwoorden doe, en $q.all() lijkt een goede plek om te beginnen.

Volgens de AngularJS $q Service API Reference – $q.alldocument,

all(beloften)

Combineert meerdere beloften in één enkele belofte die wordt opgelost wanneer alle invoerbeloften zijn opgelost.

Retourneert:Retourneert een enkele belofte die zal worden opgelost met een array/hash van waarden, waarbij elke waarde overeenkomt met de belofte bij dezelfde index/sleutel in de array/hash van beloften. Als een van de beloften wordt opgelost met een afwijzing, wordt deze resulterende belofte afgewezen met dezelfde afwijzingswaarde.

Betekent dit dat als ik een array van verzoeken doorgeef (zoals $q.all(calls).then(response)), de geretourneerde beloften in een array in de dezelfdevolgorde staan als de oproepen worden doorgegeven? Kan ik iets doen als response[0]om de responsgegevens op te halen die zijn geretourneerd door de 0e aanroep? Dank je.


Antwoord 1, autoriteit 100%

Betekent dit dat als ik een reeks verzoeken doorgeef (zoals $q.all(calls).then(response)), de geretourneerde beloften in een array staan in dezelfde volgorde als waarin de oproepen worden doorgegeven? Kan ik iets doen als response[0] om de responsgegevens op te halen die zijn geretourneerd door de 0e oproep?

Ja, de resultaten in een array worden in dezelfde volgorde geretourneerd:

angular.module("app",[])
.run(function($q) {
     var promise99 = $q.when(99);
     var promise22 = $q.when(22);
     $q.all([promise22,promise99]).then(function([result22,result99]) {
         console.log(result22);
         console.log(result99);
     });
});
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app"></body>

Other episodes