公开承诺和自定义方法

时间:2016-02-23 09:21:42

标签: angularjs promise angular-promise

我正在使用超媒体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。我不确定是否有一种机制可以用承诺来做到这一点。

1 个答案:

答案 0 :(得分:0)

承诺,返回值(或其他承诺)。

.then
  

因为调用promise的config.xml方法会返回一个新的派生promise,所以很容易创建一个promises链

     

可以创建任意长度的链,并且由于可以使用另一个承诺(将进一步推迟其解析)来解决承诺,因此可以在链中的任何点暂停/推迟承诺的解析。 / p>

- AngularJS $q Service API Reference -- Chaining Promises

另见Angular execution order with $q