我希望实现一项具有以下功能的服务:
应存在两个函数以提供所获取数据的不同表示。
到目前为止,我的服务大纲如下:
angular.module('someApp')
.service('someService', function ($http) {
var httpPromise = $http.get('/some/endpoint/').then(
function(response) {
// HTTP response data is processed
});
this.getSomePromise = function() {
// Return a promise which is resolved using one representation of HTTP response
}
this.getAnotherPromise = function() {
// Return a promise which is resolved using another representation of HTTP response
}
});
如果只需要一个'getter'功能,那么显然我可以简单地返回httpPromise
。
如图所示,实现界面的适当方法是什么?两个或更多消费者是否有可能在同一个承诺上调用.then()
,在这种情况下,我只能从这两个函数返回httpPromise.then(function(){...modify data...})
?或者,在这种情况下是否有必要创建一个新的promise(使用$q.defer()
)并根据保存HTTP响应的缓存对象以某种方式解决它?
答案 0 :(得分:0)
您可以在http承诺上使用链接简单地创建两个承诺:
var httpPromise = $http.get('/some/endpoint/');
var firstPromise = httpPromise.then(function(response) {
return firstTransformation(response.data);
});
var secondPromise = httpPromise.then(function(response) {
return secondTransformation(response.data);
});
this.getSomePromise = function() {
return firstPromise;
}
this.getAnotherPromise = function() {
return secondPromise;
}