AngularJS:在拦截器中声明唯一变量

时间:2019-04-25 19:20:37

标签: angularjs http interceptor

我需要在HTTP拦截器中的每个请求都具有唯一的变量。因此,当请求进入时,我想将此变量设置为某个值并在响应中读取该值。问题是拦截器是共享的,因此每次新请求传入我的变量时,都会被覆盖。

angular.module('app').factory('httpInterceptor', ['$q',
function($q) {
    var myInstanceVar = "";

    return {
        request: function (config) {
            myInstanceVar = Math.random();
            return config;
        },
        response: function (response) {
            console.log(myInstanceVar);
            return response || $q.when(response);
        }
    }
}
]);

因此,在此示例中,当我在myInstanceVar中输出值时,我希望response是唯一的,但它只会输出上一个请求生成的值。因此,如果我有3个请求,则输出将为3,3,3,而不是5,9,3,因为上一个请求将其设置为3

我知道我可以将值附加到请求正文中,然后让服务器将其返回,但我想避免这种情况。

如果这很重要,我正在使用AngularJS 1.6.4。

1 个答案:

答案 0 :(得分:1)

您可以将变量存储在config中,然后将其恢复到response.config中。

相关问题