我有一个控制器方法,我称之为服务方法.Angular正在按顺序调用服务器:
控制器:
$scope.add = function () {
var waiver = new MyObject();
service.add(waiver);
service.getLast().then(function (result) {
$scope.model.myObjects.push(result.data);
});
}
服务:
this.add = function (waiver) {
$http({
method: "POST",
url: "api/theServer/Add/",
data: waiver
});
};
this.getLast = function() {
return $http({
method: "GET",
url: "api/TheServer/GetLast"
})
.success(function (data) {
return data;
})
.error(function (data) {
console.log(data);
alert("EPIC FAIL");
})
;
};
如果我使用Chromes调试工具,angular会按正确的顺序调用SERVICE方法;但是,当调用实际的Server时,在Add之前调用GetLast。我需要在服务器上按顺序调用它们。
任何建议?
答案 0 :(得分:2)
您正在异步调用这些,因此无法保证订购。如果您需要保证一个呼叫在另一个呼叫之前发生,那么您需要链接呼叫:
service.add(waiver)
.then(function(){
return service.getLast();
})
.then(function (result) {
$scope.model.myObjects.push(result.data);
});