我想知道这是否可行,但我有一系列函数,其中promises将是一个完美的排序解决方案,但这些函数不依赖于先前承诺的数据。我想使用promises来控制执行顺序,但我仍然需要函数来访问范围闭包。
以下是有关原因的背景信息。在客户端我有一些对象。各种操作会导致客户端保存/更新此对象。我们最近有一个竞争条件,其中两个动作如此靠近,服务器实际上破坏了数据库中的对象。我认为使用promise链会很好,所以更新请求会等到没有其他挂起的更新请求。我需要发送到服务器的更新信息显然存在于作用域中,因此我需要能够在pendingRequestPromise解析时访问它。
我基本上有这样的东西:
scope.$on("UPDATE", function(event, callback){
$http.post("update", scope.myObj).success(function(updateInfo){
callback(updateInfo);
});
};
如果用户做的动作足够快,我会向服务器发送2个对象,导致上周出现问题。
答案 0 :(得分:1)
我建议使用$ q服务,如下所示:
//disable all stuff you want to user not to click with ng-disable
$scope.pageLoading=true;
var update1Promise = $http.post("update1", scope.myObj).success(function(updateInfo){
callback(updateInfo);
}),
update2Promise = $http.post("update2", scope.myObj).success(function(updateInfo){
callback(updateInfo);
}),
update3Promise = $http.post("update3", scope.myObj).success(function(updateInfo){
callback(updateInfo);
});
$q.all([update1Promise,update2Promise,update3Promise])then(function() {
$scope.pageLoading=false;
});