我在页面上有一个按钮,它在控制器中调用过程功能,但在我发布详细信息之前我需要获取 用户详细信息和userGroup详细信息,最后发布用户详细信息。
但是当我调试这个时,我可以看到我的populateUserGroups函数被调用,但没有得到详细信息,因此调用了updateUser函数,因此发布的数据没有userGroup数据。
似乎populateUserGroups函数是异步调用的,如何确保用户单击Process按钮,首先调用 getData , 然后调用 populateUserGroups 并使用返回的数据填充 $ scope.user.userGroups ,最后调用 updateUser ?
$scope.process = function () {
myservice.getData($scope.userId).success(function (data) {
$scope.user = data.value;
$scope.user.userGroups = {};
$scope.populateUserGroups();
$scope.updateUser();
});
};
$scope.populateUserGroups = function () {
myservice.getUserGroups($scope.userId).success(function (groupData) {
$scope.user.userGroups = groupData;
});
};
$scope.updateUser = function() {
myservice.updateUser($scope.user).success(function () {
// do stuff
});
};
答案 0 :(得分:1)
使用$ q.all
$q.all([
myservice.getData($scope.userId),
myservice.getUserGroups($scope.userId)
]).then(function(resps){
$scope.user = resps[0].value;
$scope.user.userGroups = resps[1].data;
$scope.populateUserGroups();
$scope.updateUser();
})