为什么angular调用服务器不正常?

时间:2015-04-03 14:03:53

标签: angularjs

我有一个控制器方法,我称之为服务方法.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。我需要在服务器上按顺序调用它们。

任何建议?

1 个答案:

答案 0 :(得分:2)

您正在异步调用这些,因此无法保证订购。如果您需要保证一个呼叫在另一个呼叫之前发生,那么您需要链接呼叫:

service.add(waiver)
   .then(function(){
       return service.getLast();
    })
   .then(function (result) {
       $scope.model.myObjects.push(result.data);
   });