如何使用异步调用更改工厂的变量
How to change the variables of a factory with async call?
我对Angularjs有点陌生,我正在努力寻找实现这种流的最佳结构:
- 从我的服务器异步获取access_token
- 将其作为将来使用的变量存储在提供程序中
- 使用access_token对第三方服务器进行异步调用
我的工厂目前看起来像这个
app.factory('SomeFactory',['$resource', function($resource){
//access_token only needs to be set once
var access_token = 0;
var request = $resource('/my/server/').get();
request.promise.then(function(result){
access_token = result;
}
);
return $resource('https://third.party/:token',{token: access_token});
}])
我无法设置access_token,回调函数将以某种方式被破坏。
此外,我如何形成一个链,以便在首先设置access_token之前不能调用第三方?
尝试这个
app.factory('SomeFactory',['$resource, $q', function($resource, $q){
var service = {};
//access_token only needs to be set once
var access_token = null;
getAccessToken = function() {
var deferred = $q.defer();
if (access_token) {
deferred.resolve(access_token);
} else {
$resource('/my/server/').then(function(result){
access_token = result;
deferred.resolve(access_token);
});
}
return deferred.promise;
}
service.callThirdParty = function() {
var deferred = $q.defer();
getAccessToken.then(function(access_token) {
$resource('https://third.party/:token',{token: access_token}).then(function(result) {
deferred.resolve(result);
})
})
return deferred.promise;
}
return service;
}]);
相关文章:
- 如何使用异步调用更改工厂的变量
- 将变量传递到工厂
- 获取工厂的变量
- 如何重用ajax工厂方法来设置$scoped变量
- JSON作为Angular工厂中的变量
- 如何从变量中动态调用工厂方法
- 尝试在 AngularJS 工厂中返回局部变量时如何避免函数表达式
- AngularJS 工厂函数无法访问本地存储的缓存变量
- Angularjs 将变量从控制器传递到工厂
- Angular JS工厂和变量访问
- 参考初始化角度工厂中的变量
- $watch对angularjs中的工厂变量不起作用
- AngularJS:最好的将工厂变量绑定到$作用域或指令的方法
- Angular.js工厂变量
- 从状态设置工厂变量
- 将工厂变量复制为私有变量
- 在AngularJS中创建一个全局可用的JS工厂变量
- 从控制器观察工厂变量
- AngularJS工厂变量变为未定义
- Angular工厂变量Won't Update - Instance获取旧值