In der Praxis ist es oft notwendig, auf die Erledigung mehrerer Anfragen zu warten, bevor mit dem nächsten Schritt fortgefahren wird. Aber $http in AngularJS unterstützt keine synchronen Anfragen.
Lösung eins:
$http.get('url1').success(function (d1) { $http.get('url2').success(function (d2) { //处理逻辑 }); });
Lösung zwei:
Die darin enthaltenen Methoden werden der Reihe nach ausgeführt.
var app = angular.module('app',[]); app.controller('promiseControl',function($scope,$q,$http) { function getJson(url){ var deferred = $q.defer(); $http.get(url) .success(function(d){ d = parseInt(d); console.log(d); deferred.resolve(d); }); return deferred.promise; } getJson('json1.txt').then(function(){ return getJson('json2.txt'); }).then(function(){ return getJson('json1.txt'); }).then(function(){ return getJson('json2.txt'); }).then(function(d){ console.log('end'); }); });
Lösung 3:
Der erste Parameter der $q.all-Methode kann ein Array (Objekt) sein. Nachdem der Inhalt des ersten Parameters ausgeführt wurde, wird die Methode darin ausgeführt. Alle Rückgabewerte der ersten Parametermethode werden in Form von Arrays (Objekten) übergeben.
var app = angular.module('app',[]); app.controller('promiseControl',function($scope,$q,$http) { $q.all({first: $http.get('json1.txt'),second: $http.get('json2.txt')}).then(function(arr){ console.log(arr); angular.forEach(arr,function(d){ console.log(d); console.log(d.data); }) }); });
Das obige ist der detaillierte Inhalt vonZusammenfassung, wie AngularJS mehrere asynchrone Anforderungen verarbeitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!