Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung, wie AngularJS mehrere asynchrone Anforderungen verarbeitet

Zusammenfassung, wie AngularJS mehrere asynchrone Anforderungen verarbeitet

伊谢尔伦
伊谢尔伦Original
2017-07-21 14:27:222057Durchsuche

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!

Stellungnahme:
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