2017-02-03 5 views
0

У меня есть запрос перехватчик, как показано ниже:Угловая - операция Асинхронной с запросом перехватчиком

var requestFactory = angular.module('queryParamsModule', []) 
     .factory('headerInterceptor', function($injector) { 

      return { 
      request: requestInterceptor 
      }; 

      function requestInterceptor(req) { 
       var accessToken; 
       $injector.get('tokenService').accessToken().then(function(res) { 
       accessToken = res.access_token; 
       console.log(accessToken); >>>>> accessToken is populated fine! 
       req.headers = _.extend({ 
        'Authorization': 'Bearer ' + accessToken 
       }, req.headers); 
       }, function(e) { 
       // error 
       }); 

      return req; 
      } 

     }) 
     .config(function($httpProvider) { 
      $httpProvider.interceptors.push('headerInterceptor'); 
     }); 

     return queryParamsFactory; 

Проблема здесь в том, угловое оленьей коже ожидание авторизации заголовок добавляемого в запросе и толкает перехватчик перед добавлением заголовка Authorization ,

Есть ли способ, чтобы я мог перехватить заголовок перехватчиком частичной части обещания, которое разрешилось после того, как было получено обещание по поводу доступа?

ответ

2

Как the manual говорит,

запрос: перехватчики дозвонились с объектом HTTP конфигурации. Функция может свободно изменять объект конфигурации или создавать новую. Функция должна возвращать объект конфигурации напрямую или обещание, содержащее конфигурацию или новый объект конфигурации.

Так оно и должно быть:

function requestInterceptor(req) { 
     return $injector.get('tokenService').accessToken().then(function(res) { 
     ... 
     return req; 
     }, function(e) { ... }); 
    } 
+0

Работал как шарм. Большое спасибо! – theConstructor

+0

Добро пожаловать. – estus

Смежные вопросы