Como faço para usar $Q. all (promessas) em angularjs

Normalmente eu faria

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

agora eu tenho várias chamadas para executar e eu gostaria de esperar que todos eles terminem antes de fazer algo com suas respostas, e $Q. all () parece ser um bom lugar para começar.

Per the AngularJS $q Service API Reference - $Q. all document,

Todas (promessas)

combina múltiplas promessas em uma única promessa que é resolvida quando todas as promessas de entrada são resolvido.

Retorna: Retorna uma única promessa que vai ser resolvido com uma matriz/hash de valores, cada um de valor correspondente à promessa no mesmo índice/chave nas promessas matriz/hash. Se alguma das promessas for resolvida com uma rejeição, esta promessa resultante será rejeitada com o mesmo valor de rejeição.

Isso significa que se eu passar em uma série de pedidos(como $Q. all(chamadas).então (Resposta)), as promessas retornadas estão em uma matriz no A mesma ordem que as chamadas são passadas? Posso fazer algo como response[0] para recuperar os dados de resposta devolvidos pela 0ª chamada? Obrigado.

Author: Community, 2019-10-02

1 answers

Isso significa que se eu passar em uma série de pedidos(como $Q. all(chamadas).então (Resposta)), as promessas retornadas estão em uma matriz na mesma ordem que as chamadas são passadas? Posso fazer algo como resposta[0] para recuperar os dados de resposta devolvidos pela 0ª chamada?

Sim, os resultados numa matriz são devolvidos na mesma ordem:

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>

{[4] } Também Aceita Erupções cutâneas

angular.module("app",[])
.run(function($q) {
     var promise99 = $q.when(99);
     var promise22 = $q.when(22);

     var promiseHash = {
         r99: promise99,
         r22: promise22
     };
     
     $q.all(promiseHash).then(function(resultHash) {
         console.log(resultHash.r22);
         console.log(resultHash.r99);
     });
});
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app"></body>

Para mais informações, ver

 1
Author: georgeawg, 2020-06-20 09:12:55