Heim > Web-Frontend > js-Tutorial > Hauptteil

Zusammenfassung, wie AngularJS mehrere asynchrone Anforderungen verarbeitet

伊谢尔伦
Freigeben: 2017-07-21 14:27:22
Original
2067 Leute haben es durchsucht

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) {
            //处理逻辑
        });
    });
Nach dem Login kopieren

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');
    });
});
Nach dem Login kopieren

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);
        })
    });
});
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage