我正在使用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个请求,从该指令调用,并通过infinity-scroll
发送uploadMore()。
但是,在用户登录后,页面不显示前10个条目,而是连续2次显示11-20个项目。
当我尝试调试它时,我注意到当angular-http-auth
重试请求时,它使用两个查询增加了10个Offset值($scope.module
参数)。
函数upload()
和uploadMore()
在angular-http-auth
之前运行了2次,所以我猜这就是为什么拦截器为这两个查询使用更新的参数。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
因此,您可以解决此问题,防止执行请求,直到上一个完成。 更快的方法是:
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);
});
});
}
}