我需要在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。
答案 0 :(得分:1)
您可以将变量存储在config
中,然后将其恢复到response.config
中。