AngularJS: 在拦截器中声明唯一变量
AngularJS: Declaring unique variable inside 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);
}
}
}
]);
所以在这个例子中,当我在 response
中输出值时,我希望 myInstanceVar
是唯一的,但它只输出上次请求生成的值。因此,如果我有 3 个请求,输出将是 3,3,3
而不是 5,9,3
,因为最后一个请求将其设置为 3
.
我知道我可以将值附加到请求正文并让服务器 return 返回它,但我想尽可能避免这种情况。
如果重要的话,我正在使用 AngularJS 1.6.4。
您可以将变量存储在 config
中,然后在 response.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
.
我知道我可以将值附加到请求正文并让服务器 return 返回它,但我想尽可能避免这种情况。
如果重要的话,我正在使用 AngularJS 1.6.4。
您可以将变量存储在 config
中,然后在 response.config
中取回。