我希望我的控制器能够通过服务从API获取指标列表:
Controller.js
dataService.getIndicators( ["a", "b", "c"] )
DataService.js
this.cachedIndicators = {};
var baseURL = "www.myapi.com/jsonp/indicator/";
this.getIndicators = function(indicators){
//for each indicator not in cache, retrieve it using $http.jsonp()
//when done, indicate that data
}
我可以在这里使用AngularJS缓存和承诺吗? (样本实施将受到欢迎。)
答案 0 :(得分:1)
如果每个指标都有自己的资源,并且您需要发出多个请求并且想要等到所有请求都完成,那么您可以使用$ q.all(..)方法返回包含多个promise的单个promise。
例如:
this.getIndicators = $q.all([
$http.jsonp(url1, { cache: true }).then( .. process individual result here ..),
$http.jsonp(url2, { cache: true })
])
答案 1 :(得分:0)
当然可以。在您的服务中,返回$ http.jsonp()调用结果的承诺...
this.cachedIndicators = {};
var baseURL = "www.myapi.com/jsonp/indicator/";
this.getIndicators = function(indicators){
return $http.jsonp(baseURL, { cache: true });
}
...然后修改您的控制器以处理承诺的结果......
dataService.getIndicators( ["a", "b", "c"] ).then(function(data){
// do stuff with the returned data
});