Bonjour J'essaye d'effectuer un appel asynchrone dans la méthode de réponse d'un intercepteur http dans AngularJS. L'appel async est congédié mais reste bloqué dans une boucle infinie et l'appel async est appelé encore et ... Je ne sais pas pourquoi, je suppose que l'erreur a à voir avec la structure de mon async appelInterception HTTP angulaire JS boucle asynchrone infinie
var app = angular.module('AceAngularApi', []);
app.service ('Ace', [ '$ http', '$ q', 'injecteur $', '$ fenêtre', la fonction (http $, $ q, injecteur $, fenêtre $) {
this.user = null;
var setToken = function(token){
$window.localStorage.token = token;
};
var removeToken = function(){
$window.localStorage.token = '';
}
var setCurrentUser = function(currentUser){
user = currentUser;
};
var getCurrentUser = function(){
var self = this;
var url = "http://localhost:8080/api/currentuser";
var response = $http.post(url, {}).then(function(response){
if(response.data.data["obj"]){
self.user = response.data.data["obj"];
}
return response;
});
return response;
};
var currentUser = function(){
return user;
};
return {
setToken: setToken,
setCurrentUser: setCurrentUser,
getCurrentUser: getCurrentUser,
currentUser: this.user,
removeToken: removeToken
}
}]);
app.factory('authInterceptor',['$rootScope', '$q', '$window', '$injector',
function ($rootScope, $q, $window, $injector) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.localStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.localStorage.token;
}
return config;
},
response: function(response) {
var deferred = $q.defer();
var Ace = $injector.get('Ace');
Ace.getCurrentUser().then(function(){
deferred.resolve(response);
});
return deferred.promise;
}
};
}]);
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});