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 中取回。