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.
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