如何确保首先运行2个函数中的一个

时间:2017-02-19 04:13:37

标签: angularjs

我有两个函数bindclub()和displayevent()。我想保证bindclub()始终先运行。我也尝试将这两个函数放在ng-init中,但它也不保证首先运行bindclub()

angular.module('app', []).controller("EventCtrl",EventController); 
EventController.$inject = ["$scope", "$http", "$window"]; 

function EventController($scope, $http, $window) {
     $scope.bindclub = function () {
            $http({
                url: '/Master/bindclub',
                method: 'post',

            }).then(function (response) {
                debugger
                $scope.clubidname = response.data;
            }, function () { alert("Error in binding club"); });
        }


        $scope.displayevent = function () {
            $http({
                url: '/Master/displayevent',
                method: 'post',

            }).then(function (response) {
                alert('Displayed');

            }, function () { alert('Error in display event'); });

        }
    $scope.bindclub ();
    $scope.displayevent ();
}

5 个答案:

答案 0 :(得分:1)

第二个事件是否依赖于第一个事件?如果是,那么您可以将其设置为第一个事件的回调事件,以确保在第一个事件成功时触发它。

答案 1 :(得分:0)

函数bindclub确实在displayevent之前运行。但是这两个函数本身会进行具有回调的http调用。无法保证以您想要的顺序执行回调。

我看到的唯一工作是调用bindclub中回调内的其他函数。

另一种方法是链接回调。

答案 2 :(得分:0)

您可以将displayEvent附加到bindEvent回调中触发的自定义事件。

查看此SO帖子,了解如何执行此操作。

答案 3 :(得分:0)

使用回调函数等待sailesh 160031158 mani 160052426 pavan 160058914 函数执行,然后启动bindclub函数

displayevent

答案 4 :(得分:0)

返回承诺然后链接它们:

$scope.bindclub = function () {
    //vvvv RETURN httpPromise           
    return $http({
        url: '/Master/bindclub',
        method: 'post',

    }).then(function (response) {
        debugger
        $scope.clubidname = response.data;
    }, function () { alert("Error in binding club"); });
}

//CHAIN them
$scope.bindclub()
  .then(function () {
      $scope.displayevent();
});  

由于$ http服务返回一个promise,第二个操作可以使用第一个promise的.then方法从第一个操作链接。