为什么我的AngularJS HTTP拦截器的请求函数被调用了这么多次?

时间:2016-04-15 14:02:57

标签: angularjs

我有一个AngularJS HTTP拦截器:

$httpProvider.interceptors.push([
    "$rootScope", "$q", "$location",
    function ($rootScope, $q, $location) {

        return {
            'request': function (config) {
                var loc = $location.path();
                console.log("path: " + loc);
                ....
                ....
                return config;
            },
            ...
            };
        }
    ]);

我进行一次调用,返回25个项目的数组。使用ng-repeat将项目填充到html中。此显示导致75次调用请求函数。

任何人都可以解释为什么它会对一个HTTP请求进行如此多的调用吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

http拦截器会被每个请求角度调用,而不仅仅是数据请求。模板请求也是如此,这可以解释为什么它如此之高。

更新:过滤模板我总是使用以下功能。

function isLocalUrl(url) {
    return !(url.indexOf('http://') === 0 || url.indexOf('https://') === 0);
}

并将其称为:

return {
    'request': function (config) {
        if(isLocalUrl(config.url))
            return config;
    }
}