我使用angular-http-auth来拦截401响应,以便显示登录对话框,并且当用户被授权时,可以重试失败的请求。
由于我使用的是infinity-scroll,所以我增加了一个偏移值,每增加一次上传:
var upload = function () {
dataResource.query($scope.model).then(function (result) {
angular.forEach(result.items, function (value) {
$scope.items.push(value);
});
});
}
$scope.uploadMore = function () {
$scope.model.Offset = $scope.model.Offset + 10;
upload();
};
upload();当我的页面加载时,它会立即向服务器upload()发送2个请求(从这个指令调用),并由uploadMore()通过infinity-scroll发送。
但是,在用户登录后,页面不显示前10个条目,而是在一行中2次显示11-20项。
当我尝试调试它时,我注意到当angular-http-auth重试请求时,它对两个查询使用增加了10个偏移量值($scope.module参数)。
函数upload()和uploadMore()在angular-http-auth之前运行了2次,所以我猜这就是为什么拦截器在这两个查询中都使用更新的参数。
有人能帮我解决这个问题吗?
发布于 2015-11-03 16:39:18
因此,您可以解决此问题,防止执行请求,直到前面完成为止。更快的方法是:
var pending = false;
var upload = function () {
if(!pending) {
pending = true;
dataResource.query($scope.model).then(function (result) {
pending = false;
angular.forEach(result.items, function (value) {
$scope.items.push(value);
});
});
}
}https://stackoverflow.com/questions/33504370
复制相似问题