2017-02-03 118 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頭前推攔截。

有沒有一種方法可以讓我的頭部攔截器部分的承諾在accessToken承諾完成後解決?

回答

2

由於the manual說,

請求:攔截器被調用了HTTP配置對象。該功能可以自由修改配置對象或創建一個新的配置對象。該函數需要直接返回配置對象,或者包含配置或新配置對象的承諾。

所以它應該是:

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

工作就像魅力。非常感謝! – theConstructor

+0

不客氣。 – estus