Nos negócios reais, você geralmente precisa esperar várias solicitações para concluir antes de prosseguir com a próxima etapa. Mas $ HTTP em AngularJS não suporta solicitações síncronas.
Solução 1:
A cópia do código é a seguinte:
$ http.get ('url1'). Sucesso (função (d1) {
$ http.get ('url2'). Sucesso (função (d2) {
// Lógica de processamento
});
});
Solução 2:
Os métodos em seguida serão executados em ordem.
A cópia do código é a seguinte:
var app = angular.module ('app', []);
App.Controller ('promisecontrol', função ($ scope, $ q, $ http) {
função getjson (url) {
var diferred = $ q.defer ();
$ http.get (url)
.Success (função (d) {
d = parseint (d);
console.log (d);
adido.Resolve (d);
});
return diferred.promise;
}
getjson ('json1.txt'). Então (function () {
retornar getjson ('json2.txt');
}). Então (function () {
retornar getjson ('json1.txt');
}). Então (function () {
retornar getjson ('json2.txt');
}). Então (função (d) {
console.log ('end');
});
});
Solução três:
O primeiro parâmetro do método $ Q.All pode ser uma matriz (objeto). Depois que todo o conteúdo do primeiro parâmetro é executado, o método será executado. Todos os valores de retorno do método do primeiro parâmetro são passados como uma matriz (objeto).
A cópia do código é a seguinte:
var app = angular.module ('app', []);
App.Controller ('promisecontrol', função ($ scope, $ q, $ http) {
$ q.all ({primeiro: $ http.get ('json1.txt'), segundo: $ http.get ('json2.txt')}). Então (function (arr) {
console.log (arr);
Angular.ForEach (arr, função (d) {
console.log (d);
console.log (d.data);
})
});
});
Existem muitos tutoriais sobre o uso detalhado de $ q. Estou apenas entrando em contato também. Se você não pode falar bem, não se atreve a falar bobagem. O código acima foi escrito de acordo com o meu entendimento, e não houve problema após o teste.