繁体   English   中英

Javascript angular:http.get的块响应

[英]Javascript angular : Block response for http.get

我的应用程序遇到严重问题,我使用AngularJs。 我使用“ for”来遍历我的所有资源。 对于每个资源,我都执行$ http.get以获取有关此资源的数据。 我的问题是我的程序不等待获取$ http.get的响应,然后将$ http.get()应用于我的最后一个资源。

我首先看到资源的所有警报,然后警报(“新用户”)完成。

谢谢 ;)

$scope.loadPlanning = function() {
        //var tasksRessource = [];
        //tasksRessource.push({name: 'Go-liiive', color: '#93C47D', from: new Date(2013, 10, 23, 1, 0, 0), to: new Date(2013, 10, 25, 24, 0, 0)});
        //tasksRessource.push({name: 'Go-live', color: '#93C47D', from: new Date(2013, 10, 27, 1, 0, 0), to: new Date(2013, 10, 29, 24, 0, 0)});
        var data = [];
        for(var i = 0; i < $scope.ressources.length; i++) {

            var nameR = $scope.ressources[i].firstName + ' ' + $scope.ressources[i].lastName;
            alert(nameR);
            // On récupère la liste des visites clients associé a cet utilisateur
            //Visiteclient.getByRessource({id: $scope.ressources[i].id}, function(result) {
            $http.get("api/api/visiteclientsbyressource/" + $scope.ressources[i].id).success(function(result) {
                var tasksRessource = [];
                $scope.visiteclietest = result;

                for (var p = 0; p < $scope.visiteclietest.length; p++) {
                    var name = result[p].name;
                    var dateDebu = result[p].date;
                    var dateFin = result[p].date;
                    tasksRessource.push({name: name, color: '#93C47D', from: new Date(dateDebu), to: new Date(dateFin)});
                }

                $scope.pushData(tasksRessource);
            });

            $scope.pushData = function(taskr) {
                alert ('new user');     
                data.push({name: nameR,classes: "custom-row", tasks : taskr}); 
                console.log({name: nameR,classes: "custom-row", tasks : taskr});
            }

        }
   }

由于AJAX调用是异步的,因此您应该使用Promise。 Angular使用$ q实现该模式

这是在Angular中使用promise作为指令的详细教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM