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