簡體   English   中英

AngularJS中具有Infinity-scroll的授權攔截器

[英]Authorization interceptor with Infinity-scroll in AngularJS

我正在使用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()發出兩個請求,此請求是從此指令調用的,並通過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);
                 });                        
             });
            }
         }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM