2017-02-02 3 views
1

У меня есть завод, который возвращает маркер вПрисвоить разрешить обещание переменной

var accessToken = Restangular.all(url); 
      accessToken.one('token').get() 
       .then(function(res) { 
       deferred.resolve(res.data); 
       }) 
       .catch(function(errRes) { 
       deferred.reject(errRes); 
       }); 
      return deferred.promise; 

В моем заголовке перехватчик, мне нужно, чтобы получить маркер. Пробовал ниже код:

var accessToken; 

       $injector.get('tokenService').accessToken().then(function(res) { 
       accessToken = res.access_token; 
       }, function(e) { 
       // error 
       }); 

      req.headers = _.extend({ 
       'Authorization': 'Bearer ' + accessToken 
       }, req.headers); 

Каждый раз, когда я получаю, как маркер доступа undefined. Должен быть простой способ добиться этого.

ответ

1

Потому что вы формируете req.headers за пределами accessToken() ajax call. Как правило, ваш res.headers объект с неопределенным access_token. В идеале вы должны подождать, пока accessToken() ajax не заполнится & введите res.headers код внутри accessToken().then.

завод

var accessToken = Restangular.all(url); 
    return accessToken.one('token').get() 
     .then(function(res) { 
      return res.data; 
     }) 
     .catch(function(errRes) { 
      return errRes; 
     }); 
} 

перехватчик

var accessToken; 
$injector.get('tokenService').accessToken().then(function(res) { 
    accessToken = res.access_token; 
    req.headers = _.extend({ 
     'Authorization': 'Bearer ' + accessToken 
    }, req.headers); 
}, function(e) { 
    // error 
}); 
+0

благодаря Панкай, именно то, что мне было нужно. – theConstructor

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