Home  >  Article  >  Web Front-end  >  Summary of how angularjs handles multiple asynchronous requests

Summary of how angularjs handles multiple asynchronous requests

伊谢尔伦
伊谢尔伦Original
2017-07-21 14:27:222067browse

In actual business, it is often necessary to wait for several requests to be completed before proceeding to the next step. But $http in angularjs does not support synchronous requests.

Solution one:

$http.get('url1').success(function (d1) {
        $http.get('url2').success(function (d2) {
            //处理逻辑
        });
    });

Solution two:

The methods in then will be executed in order.

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');
    });
});

Solution 3:

The first parameter of the $q.all method can be an array (object). After the contents in the first parameter are executed, the method in then will be executed. All return values ​​of the first parameter method will be passed in in the form of arrays (objects).

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);
        })
    });
});

The above is the detailed content of Summary of how angularjs handles multiple asynchronous requests. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn