Restangular, Как повторить запрос в случае ошибки?

Всем доброго времени суток. Использую вот Restangular в проекте. И делаю запрос к API серверу. В каждом запросе передается access token. И если он устарел его нужно refresh, и потом по идее, повторить запрос. Нашел в документации такой вот пример,
https://github.com/mgonto/restangular#seterrorinte...

и реалеализовал это вот так вот под свою логику
Restangular.setErrorInterceptor(
          function (response, deferred, responseHandler) {
            if (response.status == 403) {
              //refresh token
              AuthService.refreshAccessToken().then(
                function (res) {
                 //update new accessotken and refresh in local storage
                  Session.create(res);
                  
                   //this line is not in example, but as i understand i need update token in headers
                  response.config.headers['X-ACCESS-TOKEN'] = res.data.token;
                 //this line the same as in example 
                 $http(response.config).then(responseHandler, deferred.reject);
                }, function (response) {
                  Session.destroy();
                  return false;
                }
              );
              return false;
            }
            return true;
          }
        );

Но просматривая запросы через консоль разработчика, вижу что повторный запрос уходит, но данные никуда не возвращаются... Я имею ввиду в функцию контроллера, откуда изначально был сделан запрос. Может я что то упустил ?
  • Вопрос задан
  • 421 просмотр
Решения вопроса 1
Мне кажется вам нужно срезолвить руками свой внешний промис:
$http(response.config).then(function(data) {
    deffered.resolve(data);
 }, deferred.reject);

Но я честно говоря не уверен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
https://github.com/witoldsz/angular-http-auth - тут реализовано то что вам нужно через цепочку промисов, посмотрите как оно сделано, там весьма удобно. А может и просто заюзайте это решение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы