У меня есть $http
в моем приложении angularjs.
Если мой api возвращает неавторизованный ответ, я показываю логин.
После того, как пользователь вошел в систему через модальный, перехватчик запросов затем повторяет запрос $http
.
app.factory('LoginInterceptor', function ($injector, $timeout, $q) {
return {
request: function (config) {
return config;
},
response: function (response) {
var LoginModalService = $injector.get('LoginModalService'),
$http = $injector.get('$http'),
$location = $injector.get('$location'),
$rootScope = $injector.get('$rootScope'),
url = response.config.url.split('?')[0];
if (response.data && response.data.token_status <= 0) {
return $timeout(angular.noop, 1000).then(function() {
return LoginModalService.show();
}).then(function() {
return $http(response.config);
}, function() {
$location.path('/login');
return $q.reject(response);
});
}
return response || $q.when(response);
}
}
});
Проблема заключается в том, что при многократном запросе асинхронно запускается логин для каждого запроса.
Как я могу остановить выполнение всех других запросов до входа пользователя в систему? В настоящее время это работает, когда выполняется один запрос. Я не хочу, чтобы отменить все другие запросы, я хочу, чтобы решить, как только пользователь вошел в
Что вы подразумеваете под "pause"? Вы хотите отменить все параллельные запросы во время показа модаля или выполнить их после входа пользователя в систему? –
Выполните их, как только пользователь выполнит вход. - См. Редактирование на вопрос – CharliePrynn
Я написал завод для лучшего контроля. есть [посмотреть] (https://www.npmjs.com/package/angular-httpshooter) – Siddharth