Javascript 循环$http的角度等待,直到完成

Javascript 循环$http的角度等待,直到完成,javascript,angularjs,Javascript,Angularjs,我有这个工厂 produccionApp.factory('eskuratudatuak', function ($http, $q){ return { getNestedDataBetter: function (desde, hasta){ return $q.all ( $http.get('/planificacion/1/' + desde + '/' + hasta) )

我有这个工厂

produccionApp.factory('eskuratudatuak', function ($http, $q){
    return {
        getNestedDataBetter: function (desde, hasta){
            return $q.all (
                $http.get('/planificacion/1/' + desde + '/' + hasta)
            )
            .then (function(results) {
                angular.forEach(results.data, function(eguna) {
                    console.log("xie!");
                        angular.forEach(eguna.linea1, function(turno) {
                                angular.forEach(turno.ordenes, function(orden) {
                                    var url = "http://someurl:5080/expertis/delaoferta?of="+ orden.ref;
                                    return $q.all($http.get(url))
                                    .then(function(datuak){
                                        console.log("not finish yet");
                                        for ( var k=0; k < datuak.length; k++ ) {
                                            if ( datuak[k].QPendiente < datuak[k].QNecesaria ) {
                                                orden.badutstock = 1;
                                            } else {
                                                orden.badutstock = 0;
                                            }

                                        }

                                    })

                                });
                        });
                });
                console.log("finish!");
                return results.data;
            });
        }
    };
});
但正确的答案应该是

Here!
xie!
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
finish
我正在调用一个web服务,当它完成时,我正在使用一些foreach循环构建我的数据变量,这些循环有时会调用另一个web服务

在返回数据之前,我需要完成所有调用


任何线索???

问题在于,您正在管理一系列承诺,因此您需要管理这些承诺的履行,以允许流程继续,但在您的情况下,您只等待第一个承诺,然后启动其他一些请求,决不等待它们回调

有几种方法可以实现您所寻找的目标,但是有人已经编写了一个库,您可以使用它并查看它的代码来学习如何实现它


看看这里。

看看这个库,可能会有所帮助
Here!
xie!
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
XHR finished loading: GET ....
    not finish yet
finish