gpt4 book ai didi

javascript - AngularJS 中带有无限滚动的授权拦截器

转载 作者:行者123 更新时间:2023-11-27 23:42:57 25 4
gpt4 key购买 nike

我正在使用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 的偏移值($scope.module争论)。

函数 upload()uploadMore()angular-http-auth 之前运行了 2 次,所以我想这就是原因拦截器对两个查询都使用更新的参数。

有人可以帮我解决这个问题吗?

最佳答案

因此,您可以解决此问题,阻止执行请求,直到上一个请求完成为止。更快的方法是:

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);
});
});
}
}

关于javascript - AngularJS 中带有无限滚动的授权拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com