这是我在 Controller 中的代码
myFactory.getPoints().success(function (data) {
$scope.points = data;
});
myFactory.getStates().success(function (data) {
$scope.states = data;
});
myFactory.getLeases().success(function (data) {
$scope.leases = data;
});
我期望 $scope.leases 在 $scope.points 和 $scope.states 获得它们的值之后获得值。我了解到 $q 与 .then 不是同步的。是吗?
答案:我从答案中得出以下结论
$q.all([
myFactory.getPoints().success(function (data) {
$scope.Points = data;
}).error(function (data) {
$scope.error = "An Error has occurred while loading Points! " + data.ExceptionMessage;
}), //more, more, more
]).then(function () {
myFactory.getLease().success(function (data) {
$scope.leases = data;
}).error(function (data) {
$scope.error = "An Error has occurred while loading Leases! " + data.ExceptionMessage;
})
});
最佳答案
您可以将 promise 链接在一起,以便让它们同步执行:
myFactory.getPoints().success(function (data) {
$scope.points = data;
return myFactory.getStates();
})
.success(function (data) {
$scope.states = data;
return myFactory.getLeases();
})
.success(function (data) {
$scope.leases = data;
});
关于angularjs - 使用Angular我们如何在完成一堆异步调用后进行调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469774/