Angularjs Angular$q.all()将上一个操作与当前操作相结合
因为代码太复杂,我只能粘贴代码的结构:Angularjs Angular$q.all()将上一个操作与当前操作相结合,angularjs,q,Angularjs,Q,因为代码太复杂,我只能粘贴代码的结构: angular.module('xxx').controller('xxxCtrl', ['$scope', ..., '$q', function($scope, ..., $q){ ... //every checked unchecked event in multi-checkbox trigger the change in measurement $scope.$watch('measurement', functio
angular.module('xxx').controller('xxxCtrl', ['$scope', ..., '$q', function($scope, ..., $q){
...
//every checked unchecked event in multi-checkbox trigger the change in measurement
$scope.$watch('measurement', function (newValue, oldValue) {
pendingRequests = {
primary: $q.defer(),
...: $q.defer()
};
var promises = _.map(pendingRequests, function (deferred) {
return deferred.promise;
});
$q.all(promises).then(function (results) {
$scope.data = results[0];
$window.console.log($scope.data);
});
//Here i have a $http request to server
ResultService.requestResultsOnce();
});
}])
场景是这样的,页面上有多个复选框,对多个复选框的每次更改都会触发watch方法
如果我以正常速度单击复选框,它将非常有效
但是,如果我以非常快的速度单击两个复选框,回调就会出现
$q.all(promises).then
将只调用一次
有人能帮忙吗
实际上,每$http success回调正确执行2次,为什么then方法只执行1次
似乎$q.all将上一次请求与新的单击请求结合起来。因为随着逻辑的实现。。所有未决承诺都放入承诺数组。@pankajparkar我不明白,为什么我慢慢单击两个复选框,它工作得很好。你有什么解决办法吗?