我正在使用超媒体API设计一个angular
和$http
服务的API客户端。由于我拥有相互建立的资源,我希望客户端用户能够以声明方式执行此操作:
apiRoot
.getPeopleRoot()
.getPerson(1)
.addJob(apiRoot.getJobsRoot().getRandomJob())
.updatePerson()
但我希望能够使用$then
方法来使用中间结果:
$scope.job = apiRoot.getJobsRoot().getRandomJob()
apiRoot.getPeopleRoot().getPerson(1).then(function (person) {
$scope.person = person
}).addJob($scope.job).updatePerson()
我设法通过返回承诺或包含与这些资源中的每一个操作的函数的对象来分别执行这些中的每一个但是我不确定如何同时实现这两者,或者它是否是好的想法。
编辑:我设法使用以下mixin进展到我的资源对象
function Actualizable() {}
Actualizable.prototype.actual = function (value) {
this.realizedValue = value
return this
}
然后检查我是否已解决每个函数的值或调用实际解析它的promise。我不确定是否有一种机制可以用承诺来做到这一点。
答案 0 :(得分:0)
链承诺,返回值(或其他承诺)。
.then
因为调用promise的
config.xml
方法会返回一个新的派生promise,所以很容易创建一个promises链可以创建任意长度的链,并且由于可以使用另一个承诺(将进一步推迟其解析)来解决承诺,因此可以在链中的任何点暂停/推迟承诺的解析。 / p>