如何在angularjs中等待多个请求完成

Dis*_*sha 0 javascript performance angularjs angular-promise

在继续我的Web应用程序之前,我想要多个方法完全加载.为此,我做了以下 -

      function getData(){
        var defer = $q.defer();
        $http.get("/echo/json/").success(function(data, status) {
            getData2();
            getData3();
            $timeout(function(){        
                 defer.resolve(data);
            }, 1000); 
        });
        return defer.promise;
      }
Run Code Online (Sandbox Code Playgroud)

在这里,getData2()和getData3()也会执行ajax调用.所以我必须等待这些方法来完成调用,然后我必须返回main方法的承诺.

这很好,但给我性能问题.我可以用其他任何方式吗?

Maj*_*uti 6

如果订单不重要,请使用$ q.all(),如下所示:

$q.all([getData1(), getData2(), getData3()])
    .then(function(result){
        // result[0] is output of getData1() 
        // result[1] is output of getData2()
        // result[2] is output of getData3()
    });
Run Code Online (Sandbox Code Playgroud)

但如果订单很重要,请按以下方式将其称为链:

getData1()
    .then(function(result1){
         return getData2();
    })
    .then(function(result2){
         return getData3();
    })        
   .then(function(result3){
         // your other codes
    });
Run Code Online (Sandbox Code Playgroud)