angularjs没有顺序执行

时间:2016-05-05 15:02:57

标签: angularjs

我的angularjs代码如下:

     holidays = new Array();
     var deferred = $q.defer();
        servicePOST.send(appConstants.BASE_MS_URL + 'Dcrs/activityDay.php',{
            "date":d
        }).then(function(result) {

            $scope.holidays = result; 

        alert(holidays.length);
            deferred.resolve(result);
        });
        return deferred;


     alert("holiday length after service post"+holidays.length);

angularjs不是顺序的,因为它发生在我身上。所以这段代码到底执行了!我的这个代码在我的angularjs控制器中以这样的顺序插入,下面的代码依赖于这个'假日'数组。在上面的代码中发生的是警报'服务post0后的假日长度'首先弹出,而不是在服务帖后执行,实际显示数组的长度。

现在我尝试使用$ q,promises,如上所述,但它似乎没有工作。我只在我的angularjs控制器中注入$ q。  我在上面的代码中做了什么错误?请帮忙!

2 个答案:

答案 0 :(得分:0)

代码是按顺序执行的,只是请求需要时间来解决,但它会在警报之前启动。您应首先处理请求,然后在"然后"。

内提醒结果

答案 1 :(得分:0)

承诺会返回另一个承诺,因此您可以使用此第二个承诺,按照您希望的顺序执行逻辑。在这种情况下,使用$ q服务也会让事情变得复杂。

holidays = new Array();

var promise = servicePOST.send(appConstants.BASE_MS_URL + 'Dcrs/activityDay.php',{
    "date":d
}).then(function(result) {
    $scope.holidays = result; 
    alert(holidays.length);
    return result;
});

promise.then(function(result) {
    alert("holiday length after service post"+holidays.length);
});