Restangular:解决复杂的嵌套请求

时间:2017-04-12 19:44:38

标签: angularjs service promise factory restangular

通过调用执行以下操作的函数激活我的控制器:

  • 获取Car'/ api / car /:id'
    • 然后,让车上的人(对于汽车对象中的每个人,得到'/ api / person /:id'
      • 然后,获取该人的子女(亲自为每个孩子,获得'/ api / child /:id')
  • 最后,返回一个包含所有上述数据的对象。

这个逻辑很复杂,但是根据服务器的当前架构,我只能将它们链接在一起并且一步一步,因为在得到汽车信息之前我不知道车里有谁。我们没有在服务器上设置任何过滤器,所以我们一次只能找到一个对象。

我想将此逻辑移至工厂,服务或提供商。在初始化控制器时,应该可以通过注入访问服务中存储的数据。

有没有人有这样的问题经验,并找到了一个很好的解决方案?如果做出所有这些请求后,我将如何返回一个解析的承诺,即使它们是嵌套循环?

1 个答案:

答案 0 :(得分:0)

我目前使用的答案如下:

从控制器我调用汽车服务中的功能。该函数getFullCar()看起来像:

function getFullCar(id) {
  var defer = $q.defer(); // set up promise 
  Car.get(id).then(carSuccess, carError);
  return defer.promise; // promise that is being returned

  ... // more nested get requests

  // after every load I call a function checkLoaded()
  function checkLoaded() {
    if (//check variables are loaded) {
      defer.resolve(// data to retun);
    }
  }

}