Im tatsächlichen Geschäft müssen Sie häufig auf mehrere Anfragen warten, bevor Sie mit dem nächsten Schritt fortfahren. $ Http in AngularJS unterstützt jedoch keine synchronen Anfragen.
Lösung 1:
Die Codekopie lautet wie folgt:
$ http.get ('url1'). Erfolg (Funktion (d1) {
$ http.get ('url2'). Erfolg (Funktion (d2) {
// Logik verarbeiten
});
});
Lösung 2:
Die Methoden werden dann in der Reihenfolge ausgeführt.
Die Codekopie lautet wie folgt:
var app = angular.module ('App', []);
App.Controller ('PromiseControl', Funktion ($ scope, $ q, $ http) {
Funktion getJson (url) {
var deferred = $ q.Defer ();
$ http.get (URL)
.Success (Funktion (d) {
d = parseInt (d);
console.log (d);
aufgeschoben.resolve (d);
});
Rückgabe aufgeschoben.Promise;
}
getJson ('json1.txt'). Dann (function () {
return getJson ('json2.txt');
}). Dann (function () {
return getJson ('json1.txt');
}). Dann (function () {
return getJson ('json2.txt');
}). Dann (Funktion (d) {
console.log ('end');
});
});
Lösung Drei:
Der erste Parameter der $ Q.All -Methode kann ein Array (Objekt) sein. Nachdem alle Inhalte im ersten Parameter ausgeführt wurden, wird die Methode dann ausgeführt. Alle Rückgabewerte der Methode des ersten Parameters werden als Array (Objekt) übergeben.
Die Codekopie lautet wie folgt:
var app = angular.module ('App', []);
App.Controller ('PromiseControl', Funktion ($ scope, $ q, $ http) {
$ Q.All ({zuerst: $ http.get ('json1.txt'), zweitens: $ http.get ('json2.txt')}). Dann (Funktion (arr) {arr) {
console.log (arr);
Angular.foreach (arr, Funktion (d) {
console.log (d);
console.log (d.data);
})
});
});
Es gibt viele Tutorials zur detaillierten Verwendung von $ q. Ich setze mich auch nur in Kontakt. Wenn Sie nicht gut sprechen können, wagen Sie nicht, Unsinn zu sprechen. Der obige Code wurde nach meinem Verständnis geschrieben, und nach dem Testen gab es kein Problem.