我需要获得有效的访问令牌,因此我为该
创建了一个函数getValidAccessToken(){
/*
SOME CODE ...
*/
if(!expired){
return accessToken
}
else{
// AJAX call for new token
// return accessToken containing new token
}
}
所以当我调用getValidAccessToken()时,我想获得accessToken(当前的一个或新的将来自AJAX调用)
答案 0 :(得分:0)
你需要使用promises。在Angular中,最好使用$q
service provider。您需要创建一个promise,然后从该方法返回它。然后在该方法中,解决或拒绝承诺。
getValidAccessToken(){
var deferred = $q.defer();
/*
SOME CODE ...
*/
if(!expired){
deferred.resolve(accessToken);
}
else{
// AJAX call for new token
$http.get('/some/url/accessToken')
.success(function(data) {
// return accessToken containing new token
deferred.resolve(data.accessToken);
}).
.error(function(error) {
deferred.reject(error);
});
}
return deferred;
}
然后,在使用此方法的代码中,在解析或拒绝promise时调用方法:
var tokenCall = getValidAccessToken();
tokenCall.then(function(token) {
// Use the token somehow
}, function(error) {
// Crap. There was an error.
});