我的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。 我在上面的代码中做了什么错误?请帮忙!
答案 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);
});