【发布时间】:2015-08-06 14:00:50
【问题描述】:
我希望实现具有以下功能的服务:
- 只对给定资源执行一次 HTTP 请求。
- 提供两个导出函数,每个函数都返回一个承诺,其中承诺是根据来自一次性 HTTP 调用的数据解析的。
这两个函数应存在以提供获取数据的不同表示。
到目前为止我的服务大纲如下:
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 响应的缓存对象以某种方式解决它?
【问题讨论】: