AngularJS: объявление уникальной переменной внутри перехватчика

Мне нужно иметь переменную, уникальную для каждого запроса внутри моего 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, если это важно.


person Raymond Holguin    schedule 25.04.2019    source источник
comment
Сохраните переменную в конфигурации и верните ее в response.config.   -  person JB Nizet    schedule 25.04.2019
comment
@JBNizet отличное спасибо !! Пожалуйста, добавьте ответ и я приму   -  person Raymond Holguin    schedule 25.04.2019


Ответы (1)


Вы можете сохранить переменную в config и вернуть ее в response.config.

person JB Nizet    schedule 25.04.2019