我有两个函数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 ();
}
答案 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
方法从第一个操作链接。