簡體   English   中英

如何中止HTTP攔截器中的請求?

[英]How to abort a request in a http-interceptor?

在一個應用程序中,我具有以下api的網址結構:

// public
public/url-xyz

// private
dashboard/url-xyz

知道這一點並嘗試保存不必要的請求:取消請求的最佳方法是什么? 到目前為止,我嘗試過的是:

angular.module('mymod').factory('httpInterceptors', function ($injector, $q, httpBuffer)
{

    return {
        request: function (config)
        {
            var url = config.url;
            if (url.match('/dashboard/')) {
                    // immediately cancel request
                    var canceler = $q.defer();
                    config.timeout = canceler.promise;
                    canceler.reject(config);

                    // logout and go to login-page immediately
                    // ...                       
            }

            // request config or an empty promise
            return config || $q.when(config);
        }       
    };
});

但這可能導致$ressource出現問題,因為它期望一個數組並獲得一個對象作為響應(如果這樣取消了它的請求)。

您應該可以返回$q.reject([reason])

angular.module('mymod').factory('httpInterceptors', function ($injector, $q, httpBuffer)
{

    return {
        request: function (config)
        {
            var url = config.url;
            if (url.match('/dashboard/')) {
                    // immediately cancel request
                    return $q.reject(config);

                    // logout and go to login-page immediately
                    // ...                       
            }

            // request config or an empty promise
            return config || $q.when(config);
        }       
    };
});

暫無
暫無

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

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