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

AngularJS:在拦截器内声明唯一变量,angularjs,http,interceptor,Angularjs,Http,Interceptor,我需要在http拦截器中有一个每个请求都是唯一的变量。因此,当请求传入时,我希望将该变量设置为某个值,并在响应中读取该值。问题是拦截器是共享的,所以每次在我的变量中出现新请求时,拦截器都会被覆盖 angular.module('app').factory('httpInterceptor', ['$q', function($q) { var myInstanceVar = ""; return { request: function (config) {

我需要在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);
        }
    }
}
]);
因此,在本例中,当我在
response
中输出值时,我希望
myInstanceVar
是唯一的,但它只输出上次请求生成的值。因此,如果我有3个请求,输出将是
3,3,3
,而不是像
5,9,3
,因为上次请求将其设置为
3

我知道我可能只是将该值附加到请求主体中,然后让服务器返回它,但如果可能的话,我希望避免这种情况


如果需要的话,我正在使用AngularJS 1.6.4。

您可以将变量存储在
config
中,并将其返回到
response.config

中将变量存储在config中,并将其返回到response.config中。@JBNizet非常感谢!!请添加答案,我将接受